我正在编写一个复杂的MySQL查询。我的实际查询比我下面提到的更复杂。
我有一个名为example
的表格,列数为id
,name
,option_1
,option_2
。当然id
列是PK。我想像这样检索:
SELECT `id`,`name`,count(`option_1`),count(`option_2`)
我的问题是,我想分别对"GROUP BY `id`"
使用count(`option_1`)
而"GROUP BY `name`"
使用count(`option_2`)
。现在我必须在我的PHP代码中将其分解为多个代码。
如何在单个查询中实现我想要的目标?
答案 0 :(得分:0)
你要求的东西并没有多大意义。您希望选项1按id
分组,选项2按name
分组,并且您希望在一个结果集中显示所有四列。
首先,如果id
是主键,则计数将只是表中的行数,因为没有重复的ID。
其次,即使id
不是主键,并且存在重复值,分组也会有所不同,因此结果集中显示的计数将被错误地分组。
鉴于id
是主键,或许您的意图实际上是获取表中行的总数。也许这个查询符合您的需求?
SELECT
name,
COUNT(option_2) AS options
FROM
example
GROUP BY
name
UNION ALL
SELECT
'Total' AS name,
COUNT(*) AS options
FROM
example
这可以让您计算所有option_2
值,按名称分组,最后一行的name
为'总计'并且计数是表中的总行数。
除此之外,我不确定您是否会找到您正在寻找的答案,因为您遇到的问题会与分组相匹配。