[英]sql: select rows which have the same column value in another column with a single query
示例表:
id | value
----------
1 | abc
1 | cb3
1 | dsf
2 | sss
2 | d3
因此,如果輸入為“ cb3”,我想獲取所有ID為1的行,如果輸入為“ sss”,我想獲取所有ID為2的行。這可以通過一個查詢而不是兩個查詢來完成嗎? (第一個查詢是查找ID,第二個查詢帶上找到ID的行)。 另外,一種查詢方法會更快嗎?
先感謝您。
請嘗試以下操作,在其中將'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 ...
。
你可以試試這個:
SELECT *
FROM TABLE my_table
WHERE id IN (SELECT id
FROM TABLE my_table
WHERE value = input
)
您也可以使用inner join
來解決它。
SELECT S.*
FROM dataset AS S
INNER JOIN dataset AS T
ON S.id = T.id
WHERE T.value = 'cb3';
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.