mySQL 结合两个表我得到更多结果

标签 mysql

我有一张这样的 table

用户|项目ID

还有另一个像这样的表:

项目ID |项目特征1 | itemTrait2 等...

我正在尝试链接一个查询中的表,这应该很简单。我像这样进行查询:

SELECT * FROM Table1, Table2  WHERE Table1.userID = 1 AND Table1.itemID = Table2.itemID;

问题是我收到了 456 个返回结果,但如果我只是运行:

SELECT * FROM Table1 WHERE userID = 1;

我得到 434 个结果。这两个语句应该得到相同数量的返回结果吗?

我想象这个调用的工作原理是,对于表 1 中用户 1 的每个条目,它都会将其连接到表 2 中的项目数据?我想我在这里遗漏了一些东西。

最佳答案

基于 itemID 组合两个表的查询

select * from table1 t1
left join table t2 on t1.itemID = t2.itemID
where t1.itemID = 1;

如果您获取的记录多于table1 的记录,那么您的第二个表table2 必须有多个itemID 记录。例如

表1

user | itemId               
---------------
1    |  1

表2

itemId  |   itemTrait1    | itemTrait2  
----------------------------------------
1       |      A          |  B
1       |      C          |  D

现在,当您在此处应用联接时,它将把 itemID 1 与第二个表的两个项目联接起来。

关于mySQL 结合两个表我得到更多结果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32385495/

相关文章:

php - Docker-Symfony-Mysql : SQLSTATE[HY000] [2002] Connection refused

php - 在进入 SQL 查询之前是否需要转义 $_SESSION ['username' ]?

MySql 查询 - 将数据扩展到新表中

android - 尝试使用 where 子句时内容解析器 .query 出现问题

PHP 进行无限查询

python - 使用 python 从查询返回元组

java - 如何在 Java 中同步 Map <-> MySQL?

mysql - 无法使用 Angular 和 Sequelize 在 MariaDB sql server 中运行两个查询(语法错误)

MYSQL - 将 UNION ALL 的 GROUP_CONCAT 结果合并为一行

javascript - express.js 和 mysql 身份验证