用OR子句连接两个表

时间:2013-10-11 16:51:18

标签: mysql sql

我的查询结果有问题。我有2个表,我想加入特定的连接,以获取有关它的所有信息和不包括第二个表的条件。有我的表:

main_orders:

id | destination
----------
1  |  London
2  |  Germany
2  |  Netherland
3  |  Polska
4  |  JP

includes:

id | rel_id
----------
1  |  2
1  |  3

这里id号1是主要订单,它还包括其他订单显示,如第二个表中的rel_id

我想从main_orders中选择id 1的订单详情,以及与此id相关的订单

我的查询是,

SELECT a.id FROM main_orders a, includes b
where (a.id = 1) OR (b.id = 1 and a.id = b.rel_id) 

只有在第二个表中有任何相对订单时才有效,请帮助结果如下

RESULTANT ROWS:

id | destination
----------
1  |  London
2  |  Germany
2  |  Netherland
3  |  Polska

由于

4 个答案:

答案 0 :(得分:3)

你可以使用exists子句:

SELECT a.id, a.destination FROM 
main_orders a
where a.id = 1 
or exists (select null 
                          from includes b 
                          where  b.rel_id = a.id
                          and b.id =1);

请参阅sqlFiddle

答案 1 :(得分:0)

也许是这样的?

选择a.id从LEFT JOIN b on a.id = b.id GROUP BY a.id;

(显然使用你的表名)

答案 2 :(得分:0)

SELECT      main_orders.id, main_orders.destination
FROM        main_orders
  LEFT JOIN includes ON includes.rel_id = main_orders.id
WHERE       main_orders.id = 1 OR includes.id = 1

sqlfiddle上查看。

答案 3 :(得分:0)

试试这个。

SELECT a.id FROM main_orders a, includes b
where (b.id=1 and (a.id=b.rel_id or a.id=1 ))