我想 Select 表A中的所有列,只 Select 表B中的一列,因为信息是相关的,所以我try 连接表,但失败了.

下面的设置可以作为示例,请注意genreId是TbGenres(Id)的外键:

TbBooks

id title genreId
1 'title1' 4
2 'title2' 4
3 'title3' 2

TbGenres

id name
1 'Action'
4 'Comedy'

我想要一个根据genre_id提供以下内容的查询.因此,例如,当我们将4作为查询的参数传递时:

id title genreId name
1 'title1' 4 'Comedy'
2 'title2' 4 'Comedy'

我try 使用带有WHERE子句的INTER JOIN和其他JOIN,如下所示:

SELECT a.*, b.name from TbBooks AS a INNER JOIN TbGenres AS b WHERE a.genreId = 4

But it returned multiple repeated rows with incorrects TbGenres names.

有人能帮一下这个忙吗?我还想过使用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;

这是fiddle link美元

Mysql相关问答推荐

MySQL InnoDB:可以在没有回滚损失的情况下从运行的查询中进行大型插入吗

MySQL没有使用S隐式附加到此二级索引的主键

根据上一行S列结果计算列的查询

Python MySQL-无法从数据库中删除行

运行简单查询时Prisma预准备语句错误

警告:MYSQL_OPT_RECONNECT 已弃用

从表中动态删除所有空列

Eloquent:通过国外模型得到平均分

GoRM中行最大值查询返回"0"

Select 构成每天聚合 MAX 的各个行

MySQL如何在触发器内部 Select 多行然后插入它们

SQL使用LIMIT获取结果和结果中的行数

Mysql insert with loop out of select 语句

MYSQL LOAD DATA INFILE 语句适用于工作台,但不适用于 python

MYSQL:创建表中的索引关键字以及何时使用它

mysqli_fetch_array() 期望参数 1 为 mysqli_result,布尔值

一次查询 MySQL 插入多行

我可以在单个 Amazon RDS 实例上创建多少个数据库

在osx的命令行中使用Mysql-找不到命令?

如何将本地托管的 MySQL 数据库与 docker 容器连接