MySql:在一个查询中使用 Select 语句从一个表中检索所有数据,并仅从另一表中检索一个数据

问题描述 投票:0回答:1

我想选择表A中的所有列,只选择表B中的一列,信息是相关的,所以我尝试连接表,但没有成功。

可以使用以下设置作为示例,请注意,genreId 是 tbGenres(id) 的外键:

tb书籍

id 标题 流派ID
1 '标题1' 4
2 '标题2' 4
3 '标题3' 2

tb流派

id 名字
1 ‘行动’
4 “喜剧”

我想要一个基于类型 ID 给出以下内容的查询。例如,当我们传递 4 作为查询参数时:

id 标题 流派ID 名字
1 '标题1' 4 “喜剧”
2 '标题2' 4 “喜剧”

我尝试将 INNER JOIN 和其他 JOINS 与 WHERE 子句一起使用,如下所示:

SELECT a.*, b.name from tbBooks AS a INNER JOIN tbGenres AS b WHERE a.genreId = 4

但是它返回了多个重复的行,其中的 tbGenres 名称不正确。

有人可以帮忙解决这个问题吗?我也想过使用 UNION,但我不能,因为我在两个表中没有相同数量的列。

sql mysql
1个回答
0
投票

您可以将

INNER JOIN
子句与正确的
ON
条件结合使用。 。这是更正后的代码:

SELECT a.*, b.name
FROM tbBooks AS a
INNER JOIN tbGenres AS b ON a.genreId = b.id
WHERE a.genreId = 4;

这是小提琴链接

© www.soinside.com 2019 - 2024. All rights reserved.