我在连接两个表时遇到问题:
table1
id name
1 aaa
2 bbb
3 ccc
table2
id table1_id name
1 1 x1
2 1 x2
3 2 s1
table1
是主表,table2
包含属性。
我需要加入并搜索两个表,但显示第一个表的不同结果。
使用JOIN
时,我会从table2
获得多个结果。
场景是我需要搜索TABLE2中的主表TABLE1和ALL ATTRIBUTES,如果找到则返回
答案 0 :(得分:1)
select distinct(name) from table1 inner join table2 on table1.id = table2.table1_id where table2.name = x2;
应该做的伎俩。
答案 1 :(得分:1)
如果您需要两个表中都存在的条目:
SELECT * from Table1 t1
WHERE YourConditionsHere
AND EXISTS (SELECT 1 from Table2 t2
WHERE t1.Id = t2.Table1_id
AND YourConditionsHere)
如果您需要表1中的条目,其中表2中没有存在的单词
SELECT * from Table1 t1
LEFT JOIN
(SELECT * from Table2
WHERE YourConditionsHere
) t2
ON (t1.Id = t2.Table1_id)
WHERE YourConditionsHereForTable1
答案 2 :(得分:0)
另一个选项
select * from table1 t1 where t1.id in (select table1_id from table2 t2 where t2.name = "x1");
最好检查所有建议查询的查询平台(即EXPLAIN),并检查最适合您的确切方案的查询平台。