我有三张表,分别是news (id, title, descrption)cat (id, title)newscat (id, newsID, catID)。如您所见,每个news都可以与任何或某些cats相关。我想要一个查询获取所有的cats,如果catnews“checked”相关。我写了这个问题:

SELECT
  c.id, c.title, IF (nc.newsID = $newsID, 'checked', null) as checked
FROM
  cat c
  LEFT JOIN newscat nc ON c.id = nc.catID

但这不管用。有些是重复的。怎么了?

最佳答案

使用Wr1t3r的建议:

SELECT
  c.id, c.title, IF (COUNT(IF(nc.newsID=$NewsID,1,NULL)) > 0, 'checked', null) as checked
FROM
  cat c
  LEFT JOIN newscat nc ON c.id = nc.catID
  GROUP BY  c.id

关于mysql - 选择语句中的if语句与MySQL中的join一起使用,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/28969688/

10-13 04:44