我有一个名为channel_user_mm的表。 我尝试用一个MySQL语句选择一个特殊行。
这是一个SQL小提琴: http://sqlfiddle.com/#!2/cef86/4/0
有两个单独的SQL语句与PHP结合使用是一种“标准方式”来解决这个问题:
SELECT DISTINCT
local
FROM
`channel_user_mm`
WHERE
`foreign` = 2
OR
`foreign` = 3
此查询提供了一堆通道ID。现在我在PHP中进行测试并使用下面的查询进行测试。
SELECT DISTINCT
COUNT(*) items
FROM
`channel_user_mm`
WHERE
`local` = 12
我想知道是否可以将这两者压缩为一个查询。我用子查询试了一下。
SELECT DISTINCT
local
FROM
`channel_user_mm`
WHERE
(
`foreign` = 2
OR
`foreign` = 3
)
AND
(
SELECT DISTINCT
COUNT(*) items
FROM
`channel_user_mm`
WHERE
`local` = 12
) <= 2
我需要子查询中的通道ID。我不知道如何解决这个问题atm。
所以我脑子里有两个问题。
我希望有人帮助我。
答案 0 :(得分:0)
这是你想要的吗?
SELECT c.local, COUNT(*) items
FROM `channel_user_mm` c
GROUP BY c.local
WHERE `foreign` in (2, 3);
正如我想的那样,你似乎想要&#34;本地&#34;其中至少有一行的foreign
值为2或3。此查询可以执行您想要的操作:
SELECT c.local, COUNT(*) items
FROM `channel_user_mm` c
GROUP BY c.local
HAVING max(`foreign` in (2, 3)) > 0;
注意:foreign
是列的错误名称,因为它是SQL保留字。
答案 1 :(得分:0)
感谢您的帮助。 我忘了说些什么,抱歉。
目前我想得到的结果只有两个元素。 例如。列local中值为13的元素的计数为3.我只想要一个2的计数(local = 12)