【发布时间】:2016-07-05 09:57:24
【问题描述】:
我有两张桌子:
orders
poid | user | pid | payment_id
1 | 1 | 1 | abc123
2 | 2 | 2 | def345
orders_addon
poaid | user | poid | pid
1 | 1 | 1 | 3
2 | 1 | 1 | 5
一个代表订单,第二个代表用户可以添加到他的订单的插件。
订单中总是有一行,并且可能会出现订单没有匹配的orders_addon。
我正在寻找一个查询,如果有匹配的,则返回来自 orders 和 orders_addon 的匹配行。
SELECT user,pid FROM ... WHERE payment_id = 'abc123'
应该返回
user | pid
1 | 1
1 | 3
1 | 5
如果orders_addon 表中没有匹配的记录,相同的查询应该只返回orders 表中的结果。
SELECT user,pid FROM ... WHERE payment_id = 'def345'
user | pid
2 | 2
我认为这可以使用 UNION 来完成,但是我将无法匹配这些表,这将成为一个问题,因为 orders_addon 表没有 payment_id
【问题讨论】: