我正在尝试在一个表格中显示'id'
,'topic_id'
,其中'id'
可能有第二列的两个特定值。
但是,有些id有多个值。
id topic_id
1 red
2 blue
1 blue
4 purple
如果我想显示id,其中topic_id是红色和蓝色,查询是什么?
select id, topic_id
from db
where topic_id='red, blue';
结果集是“1,2”而不是1,它有红色和蓝色。
感谢!!!
答案 0 :(得分:2)
我相信这是您想要的查询:
select id
from yourtable
where topic_id in ('blue', 'red')
group by id
having count(distinct topic_id) > 1
或
select id
from yourtable
where topic_id in ('blue', 'red')
group by id
having count(distinct topic_id) = 2
答案 1 :(得分:1)
您可以使用以下查询。嵌套的SELECT查询将返回所有具有topic_id“blue”的ID。然后它将查看ID列表,如果其中任何一个也有一个'red'的topic_id,那么它们将在结果集中返回。
SELECT id
FROM table1
WHERE id IN (SELECT id FROM table1 WHERE topic_id ='blue')
AND topic_id = 'red';
答案 2 :(得分:1)
您是否正在寻找1个红色蓝色,2个蓝色,4个紫色的结果,即如果多个主题ID连接它们?如果是,请尝试使用GROUP_CONCAT
功能,如下所示:
SELECT id, GROUP_CONCAT(topic_id separator ' ')
FROM db
WHERE topic_id in ('red', 'blue')
GROUP BY id
HAVING count(id) = 2;
如果您希望主题Id值由comma (,)
分隔,则:
SELECT id, GROUP_CONCAT(topic_id separator ', ')
FROM db
WHERE topic_id in ('red', 'blue')
GROUP BY id
HAVING count(id) = 2;