繁体   English   中英

如果连接表中存在指定值,如何使用 LEFT JOIN 选择行?

[英]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*/

说明: https : //i.stack.imgur.com/gdgha.png

简单:不要做一个内部联接,做一个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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM