left join给出的结果不正确

eivgtgni  于 2021-06-21  发布在  Mysql
关注(0)|答案(2)|浏览(281)

我有两个标签a和b。这两个表共有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

此查询给出的结果与内部联接相同。为什么?
当我把这个查询放到一个视图中时,它给出了预期的结果
这应该非常简单。我只是糊涂了。
我正在使用:mysql、navicat、sqlyog

rvpgvaaj

rvpgvaaj1#

您的查询:

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 因为你把这个 WHERE 条件:

date(b.trt_date) = '2017-11-18'

你用这种方式,把每一排 b.trt_datenull .
条件如何封装在 ON 条款 LEFT JOIN 作品:
如果不满足主表->的条件,则不显示行
如果主表条件为ok,次表条件为not->显示次表所有字段的行为 NULL 如果主表和辅助表都可以->显示包含所有信息的行

6uxekuva

6uxekuva2#

SELECT * from A 
LEFT JOIN B on A.A1 = B.B1 
WHERE B.A1 IS NULL

类似的文章在这里如何检索mysql中不匹配的结果

相关问题