![](/img/trans.png)
[英][SQL]How to delete all rows containing NULL value on the joined table column using LEFT JOIN and DELETE
[英]How to select rows with LEFT JOIN if specified value exists in joined table?
我无法想象如何构建查询。 我需要从表CONTENT
选择在左连接的TEMPLATE VARIABLES
列中没有列tmplvarid=8 的行
SELECT con.id, con.alias, tv.tmplvarid FROM modx_site_content as con LEFT JOIN modx_site_tmplvar_contentvalues as tv ON con.id=tv.contentid WHERE con.deleted=0 AND (con.content IS NULL OR con.content='') AND con.template=5 AND tv.tmplvarid!=8/*not contains 8*/
简单:不要做一个内部联接,做一个OUTER JOIN代替:
SELECT con.id, con.alias, tv.tmplvarid FROM modx_site_content as con
LEFT OUTER JOIN modx_site_tmplvar_contentvalues as tv ON con.id=tv.contentid
AND tv.templvarid = 8
WHERE con.deleted=0 AND (con.content IS NULL OR con.content='')
AND con.template=5 AND tv.contentid IS NULL
因此,您在 OUTER JOIN 中加入 templvrid = 8 - 然后仅选择(在其中)tv 中具有 NULL 的行。 contentid(即那些没有找到 templvrid 8 进行连接的内容)
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.