sql:使用单个查询选择在另一列中具有相同列值的行

时间:2017-06-14 12:40:07

标签: mysql sql

示例表:

id | value
----------
1  | abc
1  | cb3
1  | dsf
2  | sss
2  | d3

因此,如果输入是“cb3”,我想获得id为1的所有行,如果输入是“sss”,我想获得id为2的所有行。这可以用一个查询而不是两个查询来完成吗? (第一个查询是查找id,第二个查询为找到的id带来行)。另外,一种查询方法会更快吗?

提前谢谢。

3 个答案:

答案 0 :(得分:1)

尝试以下操作,将'sss'替换为您要搜索的值:

select * from table t1
where t1.id in (select id from table t2 where value = 'sss')

请注意,value似乎不是关键,因此您可能会在结果中获得两组不同的ID。这也是我提出t1.id IN (select id ...而不是t1.id = (select id ...的原因。

答案 1 :(得分:1)

你可以试试这个:

SELECT * 
FROM TABLE my_table 
WHERE id IN (SELECT id 
         FROM TABLE my_table 
         WHERE value = input
         )

答案 2 :(得分:1)

您也可以使用inner join解决此问题。

SELECT S.* 
FROM dataset AS S 
INNER JOIN dataset AS T 
ON S.id = T.id 
WHERE T.value = 'cb3';