示例表:
id | value
----------
1 | abc
1 | cb3
1 | dsf
2 | sss
2 | d3
因此,如果输入是“cb3”,我想获得id为1的所有行,如果输入是“sss”,我想获得id为2的所有行。这可以用一个查询而不是两个查询来完成吗? (第一个查询是查找id,第二个查询为找到的id带来行)。另外,一种查询方法会更快吗?
提前谢谢。
答案 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';