[SQL ] left join表格后where的问题

楼主: beolk (蓝色方塔)   2023-04-27 01:59:01
数据库名称:MariaDB
数据库版本:10.4.21-MariaDB - mariadb.org binary distribution
内容/问题描述:
各位先进好,小弟目前有AB两张关联表:
A有ID、name、description等字段,B有ID、A_ID、title、content、del等字段。
del是逻辑删除的字段,如果del为1的话代表这笔纪录已经被使用者删除看不到。
我希望当对应B的纪录(del=1)或无对应纪录(del is null)时仅显示A,
若对应B的纪录(del=0)时同时显示A跟B。
有尝试过下面这种写法:
SELECT A.*, B.*
FROM A
LEFT JOIN B ON A.ID = B.A_ID
WHERE B.del = 0 OR B.del IS NULL
可以成功在没有对应B纪录时候捞出A,以及del=0时的A与B,
但是如果有一笔A只对应到del=1的B纪录时,上面的写法就捞不出这笔A了。
请教各位先进该如何修改我的SQL,谢谢。
作者: Tjpmars (回忆)   2023-04-27 09:02:00
试试看LEFT JOIN B ON A.ID = B.A_ID AND B.del = 0WHERE B.ID IS NOT NULL OR B.del IS NULL
楼主: beolk (蓝色方塔)   2023-04-28 00:55:00
LEFT JOIN B 加上 AND B.del = 0就可以了,真的非常谢谢您

Links booklink

Contact Us: admin [ a t ] ucptt.com