我有2个表格A和B.这2个表格共有1个表格:A.A1和B.B1。表A有800行,表B有500行。显然,表A中的某些行在表B中没有任何匹配的行。 现在,我希望通过发出以下查询来查看“A中哪些行与B中的行不匹配”:
select * from A
LEFT JOIN B on A.A1 = B.B1
where date(b.trt_date) = '2017-11-18' and a.tcs_type = 'SALES'
order by a.tcs_no asc
此查询的结果与INNER JOIN相同。 为什么?
当我将此查询放入VIEW时,它会给出预期结果
这应该很简单。我很困惑。
我正在使用:mysql,navicat,sqlyog
答案 0 :(得分:2)
您的查询:
select * from A
LEFT JOIN B on A.A1 = B.B1
where date(b.trt_date) = '2017-11-18' and a.tcs_type = 'SALES'
order by a.tcs_no asc
将simillary作为INNER JOIN
使用,因为你设置了WHERE
条件:
date(b.trt_date) = '2017-11-18'
以这种方式切割b.trt_date
为null
的所有行。
ON
的{{1}}子句中包含的条件是如何工作的:
LEFT JOIN
答案 1 :(得分:0)
SELECT * from A
LEFT JOIN B on A.A1 = B.B1
WHERE B.A1 IS NULL