gpt4 book ai didi

mysql - 内部联接不返回结果

转载 作者:行者123 更新时间:2023-11-29 11:16:01 25 4
gpt4 key购买 nike

当 slug 出现在我的突出显示表中时,我需要从文章和用户表中获取行。

Highlight Table

id | slug
1 blue
2 green

Article Table

id | slug | title
1 blue
2 pink

User Table

id | slug | name
1 blue
2 green
3 brown

这是我的查询:

SELECT slug from highlight_table
INNER JOIN article_table ON highlight_table.slug = article_table.slug
INNER JOIN user_table ON highlight_table.slug = user_table.slug

我希望从文章表中获取 id 1,并从用户表中获取 id 1 和 2。

问题是我从查询中没有得到任何返回。

最佳答案

查询出现错误,因为您的 SELECT slug 不明确。您的列 slug 出现在您的所有表中,因此 MySQL 不知道要返回哪一列。你需要做

SELECT `highlight_table`.`slug` from `highlight_table` 

这将告诉 MySQL 仅返回 highlight_table 中的 slug 列。

然后您应该只得到 1 行蓝色,因为蓝色存在于所有三个表中。将文章和用户表更改为 LEFT JOIN 将会返回 2 个结果(绿色和蓝色),因为 INNER JOIN 基本上充当 AND 和 LEFT JOIN 更像是一个 OR

更新!

根据这里的最后大量信息,这是一个有效的查询:

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`)

或者

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

关于mysql - 内部联接不返回结果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39728845/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com