连接两个表与子选择也是空的行

问题描述:

我有两个表: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?

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

在这种情况下,你想有一个LEFT JOIN,以包括NULL

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