因为你SELECT slug
是模糊的查询有错误。您的列slug
出现在您的所有表中,因此MySQL不知道要返回哪一列。你需要做的
SELECT `highlight_table`.`slug` from `highlight_table`
这将让MySQL只从返回slug
列。
然后,您应该只获得1行,这是蓝色的,因为蓝色在所有三个表中都存在。更改为LEFT JOIN
两个文章和用户表会让你2个结果反馈(绿色和蓝色)作为INNER JOIN
基本上可以作为一个与和LEFT JOIN
作品更像一个或
更新!
根据最终这里很多信息是查询不工作:
SELECT highlight.slug from highlight
LEFT JOIN article ON highlight.slug = article.slug
LEFT JOIN user ON highlight.slug = user.slug
WHERE
article.slug IS NOT NULL OR user.slug IS NOT NULL
这样做的另一个例子:
SELECT `highlight`.`slug` from `highlight`
WHERE `highlight`.`slug` IN (SELECT `user`.`slug` FROM `user` UNION SELECT `article`.`slug` FROM `article`)
OR
SELECT `highlight`.`slug` from `highlight`
INNER JOIN (SELECT `user`.`slug` FROM `user` UNION SELECT `article`.`slug` FROM `article`) AS `allslugs` ON `highlight`.`slug` = `allslugs`.`slug`
另一个更新,我称之为“有趣的连接”
SELECT `highlight`.`slug` from `highlight`
RIGHT JOIN `user` ON `highlight`.`slug` = `user`.`slug`
LEFT JOIN `article` ON `highlight`.`slug` = `article`.`slug`
WHERE
`highlight`.`slug` IS NOT NULL
Ive更新了雄心勃勃的选择。我也改变了左加入,但这似乎并没有工作,现在我从我的高亮表中获取所有行,即使他们不在我的其他2个表中。 – panthro
听起来像你有其他问题,你没有分享。看到[SQLFiddle](http://sqlfiddle.com/#!9/5fa815/3)它只返回我们预计的绿色和蓝色。 –
@Rahul也处于正确的轨道上,所以如果我们的建议都没有工作,那么您需要向我们提供有关您的数据的更多信息,因为它听起来不像您所描述的那样。 –