我想做一个SQL查询并遇到一些问题:
我想从table_1中选择ID,其中parent_id是我的值:
SELECT ID
FROM table_1
WHERE parent_ID = 'x'
我想使用我在1.和
中获得的IDSELECT
FROM table_2
WHERE ID = 'The ID's from Query 1.'
答案 0 :(得分:5)
喜欢这个吗?
select ...
from table_1 a
join table_2 b on(a.id = b.id)
where a.parent_id = 'x';
修改强>
注意:查询可能会产生重复的行,具体取决于键和表之间的关系。例如,如果对于给定的table_1.parent_id = X
,可能会出现多次相同的table_1.ID
,那么您将获得重复项。
另一个例子是table_2.ID不是唯一的。
在这些情况下,您需要删除重复项(使用不同的,分组依据,分区的@row_number等)或,而不是首先使用半连接生成重复项(存在,in。看看@OMG小马的答案供参考。
答案 1 :(得分:4)
SELECT t2.*
FROM TABLE_2 t2
WHERE t2.id IN (SELECT t1.id
FROM TABLE_1 t1
WHERE t1.parent_id = 'x')
SELECT t2.*
FROM TABLE_2 t2
WHERE EXISTS (SELECT NULL
FROM TABLE_1 t1
WHERE t1.id = t2.id
AND t1.parent_id = 'x')
如果TABLE_1中有多个与TABLE_2中的记录相关的记录,则DISTINCT
(或GROUP BY)是消除重复的必要条件:
SELECT DISTINCT t2.*
FROM TABLE_2 t2
JOIN TABLE_1 t1 ON t1.id = t2.id
AND t1.parent_id = 'x'
答案 2 :(得分:1)
可以使用IN
解决,如下所示:
SELECT * FROM table_2 WHERE ID IN (SELECT ID FROM table_1 WHERE parent_ID = 'x')
答案 3 :(得分:0)
select * from table_2 where id in (select id from table_1 where parent_id = 'x')
答案 4 :(得分:0)
是的,你最好使用它:
SELECT [value]
FROM [table2]
WHERE [value] IN (SELECT [value]
FROM [table1]
WHERE [value] = "[value]"
)