我想选择表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,但我不能,因为我在两个表中没有相同数量的列。
您可以将
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;
这是小提琴链接