【问题标题】:Query build automation查询构建自动化
【发布时间】:2019-02-17 06:54:17
【问题描述】:

我有以下问题

select count(t1.guid)
from table t1
where t1.id=X;

X 是此查询的结果集

select ID 
from table t2 
where t2.flags=65537;

以上查询返回84个结果,均为INT数据类型。

id 是 t2 表中的主键, 和 t1 表中的外键;

guid 是 t1 表中的主键, 并且在其他任何地方都不存在。

对象 O1 在声明所有对象及其属性的表中具有唯一标识符 (t2) 表 t1 中的 GUID 为上层调用的对象 O1 的每个实例分配唯一标识。 我想查看在第二个查询中满足条件的每个对象的重复数。

我想我应该开始声明一个变量和一个使用该变量的函数,但不知道从哪里开始或如何开始。

我曾经用手工破解 84 次解决了这个问题,但正在寻找一个更优雅、更自适应的解决方案;

【问题讨论】:

  • 你能提供样本数据吗?你期望从中得到什么数据?以便我们更好地理解。什么是对象 O1,它们的属性 GUID 是什么意思。上层等是什么意思?
  • 第二个查询定义了“X”所以 84 次而不是 X,我想替换一些东西,这反过来又会变成有效的整数子查询不会这样做,因为它不能携带超过一行值(mysql是这么说的)
  • 能否提供表格架构和表格中的一些示例数据?
  • 如果允许子查询返回多于一行,我的手动破解解决方案是 select count(t1.guid) from t1 where t1.id=(select t2.id from t2其中 t.flags=65537);子查询返回 84 个结果,我想在主查询中使用这些结果来查找重复项。 t1.guid= t1 中的 PK t1.id=FK 到 t2.id t2.id=t2 中的 PK

标签: mysql automation mysql-variables mysql-function


【解决方案1】:

玩了一整天,终于明白了

只需将两个已发布的查询链接在一起,但将“=”运算符更改为“in”

select count(t1.guid)
from table t1
where t1.id in
(select t2.ID 
from table t2 
where t2.flags=65537);

避免了手动黑客会议!

【讨论】:

    猜你喜欢
    • 2019-06-09
    • 2019-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-11-23
    • 1970-01-01
    • 2012-12-22
    • 2010-10-19
    • 2014-06-20
    相关资源
    最近更新 更多