mysql连接两个表

时间:2010-09-03 08:10:48

标签: sql mysql

我在连接两个表时遇到问题:

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,如果找到则返回

3 个答案:

答案 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),并检查最适合您的确切方案的查询平台。