MySQL查询多个LEFT JOIN与WHERE列不相似

时间:2017-07-13 17:51:38

标签: mysql

无法找到可行的语法来执行此查询

SELECT *
FROM wp_posts
LEFT JOIN wp_term_relationships ON (wp_posts.ID = wp_term_relationships.object_id)
LEFT JOIN wp_term_taxonomy ON (wp_term_relationships.term_taxonomy_id = wp_term_taxonomy.term_taxonomy_id)
WHERE wp_term_taxonomy.term_id IN (307)
GROUP BY wp_posts.ID

工作正常。

我要做的是添加此

WHERE wp_posts.title NOT LIKE '%lug'

我尝试了很多变化..但它们都会导致错误。

尝试

AND WHERE wp_posts.title NOT LIKE '%lug'

在第二个WHERE

之后

我也尝试在LEFT JOIN

之前添加它

只要我尝试将其放在查询中,就会出现一般语法错误。

1 个答案:

答案 0 :(得分:1)

左连接表的条件应该添加到on子句而不是其他用作内连接的地方

  SELECT *
  FROM wp_posts
  LEFT JOIN wp_term_relationships ON (wp_posts.ID = wp_term_relationships.object_id)
  LEFT JOIN wp_term_taxonomy 
        ON (wp_term_relationships.term_taxonomy_id = wp_term_taxonomy.term_taxonomy_id) 
              and   wp_term_taxonomy.term_id IN (307)
  WHERE  wp_posts.title NOT LIKE '%lug'
  GROUP BY wp_posts.ID

如果你没有聚合函数,你不应该使用group by(如果你好的话,请使用disticnt)在sql中不推荐使用此行为,而在某些版本中不允许使用此行为