0

我正在尝试在 Mysql 查询中加入 3 个表(表 1、表 2 和表 3),我想从 2 个表(表 1 和表 2)中提取匹配数据,比较 3 个表中存在的公共列(即“PID”)。

加入这 3 个表时,table1 中没有给定 Date('2012-12-27') 的数据,然后它返回完整的空白行。在这里,我想从 table2 中获取与给定日期匹配的匹配数据和'ZERO' 或 'NULL' 在另一个表中没有匹配的数据,即。table1 .. 而不是整个空白行。

这是我尝试返回完整空白行的代码..

SELECT * FROM table3 b
LEFT JOIN table1 r ON r.PID = b.PID
LEFT JOIN table2 a ON ab.PID = b.PID
WHERE b.Name ='stallion' AND r.Date = '2012-12-27' AND a.Date = '2012-12-27'
;
4

2 回答 2

0

使用两个不同的 JOIN 语句,然后将它们联合起来。

于 2013-01-02T16:34:59.533 回答
0

table1( r)中没有数据的行有r.Data= NULL,因此会被您的 WHERE 条件过滤掉。您需要添加OR r.Date IS NULL到 WHERE 条件或将条件移动到 ON 子句:

SELECT * FROM table3 b
LEFT JOIN table1 r ON r.PID = b.PID AND r.Date = '2012-12-27'
LEFT JOIN table2 a ON a.PID = b.PID AND a.Date = '2012-12-27'
WHERE b.Name ='stallion';
于 2013-01-02T16:36:39.253 回答