因爲你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也處於正確的軌道上,所以如果我們的建議都沒有工作,那麼您需要向我們提供有關您的數據的更多信息,因爲它聽起來不像您所描述的那樣。 –