使用子选择连接两个表也使用空行

时间:2013-04-11 19:33:52

标签: mysql sql database

我有两个表:trx,包含事件的事务和事件。 trx.purchaseid =带有events.id

的外键

我正在尝试为每个事务和事件表中的一个字段创建与元组的关系。

SELECT trx.*,
    ( SELECT open FROM events AS ev
      WHERE ev.id = trx.purchaseid
    ) AS open
FROM trx

完美的作品。但有时候没有一个具有相同id的事件行。子选择返回0行。字段open会生成0。 但是open的值可以是1 | 0.

有没有办法改变这个查询让open字段包含1 | 0 | NULL而不是1 | 0 | 0?

1 个答案:

答案 0 :(得分:1)

听起来你想使用JOIN。即使在您的示例中,您也可以使用INNER JOIN而不是子查询。

在这种情况下,您希望LEFT JOIN包含NULL

SELECT trx.*, open
FROM trx
LEFT JOIN events AS ev
ON ev.id = trx.purchaseid