gpt4 book ai didi

php - MySQL - 在一个连接表中计算不同条件下的不同字段

转载 作者:行者123 更新时间:2023-11-29 04:58:33 25 4
gpt4 key购买 nike

假设有一个名为 Table1 的表,其中包含以下列:

  • 编号
  • 条件一
  • 条件2
  • joinable_key

还有一个Main_Table,其ID对应第一个中的joinable_key。

我想以这样一种方式加入它们,即我可以根据条件 1 和条件 2 分别计算 Table1 的行数——也就是说,我希望能够执行“count(Table1.condition1) 作为first_condition, count(Table1.condtion2) as second_condition"在选择查询上。

查询可能看起来像这样:

SELECT  Main_Table.some_column, COUNT(Table1.condition1) AS first_condition, COUNT(Table1.condtion2) AS second_condition
FROM Main_Table
LEFT JOIN Table1 AS T1 on (T1.joinable_key = Main_Table.id AND T1.condition1 = 'something')
LEFT JOIN Table1 AS T2 on (T2.joinable_key = Main_Table.id AND T2.condition2 = 'something else')
GROUP BY (Main_Table.id)

然而,执行此操作时,两个计数结果相等,并且实际上相互相乘。所有结果都必须包含在最终输出中——包括那些没有来自 Table1 的任何条目的结果——也就是说,如果 Table1 中没有行的 joinable_key 等于 Main_Table.id,则也需要包含它。

在任何人建议实际上执行两个单独的查询并通过 PHP 处理它之前 - 是的,我知道为什么以及如何完成它,但我的目标是找出是否可以在一个查询中完成此多项计数.

谢谢

最佳答案

SELECT some_column,
(SELECT COUNT(1)
FROM Table1
WHERE mt.id = joinable_key
AND condition1 = 'something'
) AS first_condition,
(SELECT COUNT(1)
FROM Table1
WHERE mt.id = joinable_key
AND condition2 = 'something else'
) AS second_condition
FROM MainTable mt

关于php - MySQL - 在一个连接表中计算不同条件下的不同字段,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4153632/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com