mysql - select * from table1, table2 其中 table1.id = 1 显示具有其他 id 的值

标签 mysql

我只是看不出我如何制作外键的问题,而且我真的很困惑为什么我总是得到错误的结果。这是我工作台的截图

enter image description here

这是我的表格:

enter image description here enter image description here

这是我的图表

enter image description here

我也尝试规范化我的表,我有点期待我的查询返回类似示例表(问题表)中的结果,因为我想查询 where idsurvey,它只会显示 2 个结果= 1 我在这张图片中制作的: enter image description here

我的问题是,如果我想查询,我该如何修复我的外键

select * from survey.survey, survey.questions where idsurvey = 1

它只会返回 2 行? (基于工作台截图中的示例数据)

如果您对我的图表有任何意见和建议,我们将不胜感激。

最佳答案

from 子句中有两个表时,第一个表中的每一行都与第二个表中的每个表匹配。这被称为笛卡尔积。通常,这不是您想要的行为(就像在本例中不是这样),您会使用一个条件来告诉数据库如何匹配这两个表:

SELECT *
FROM   survey.survey s, survey.questions q
WHERE  s.idsurvey = q.survey_id AND idsurvey = 1

虽然这应该可行,但在同一个 from 子句中使用多个表已经过时了。您可能应该改用显式 join 子句:

SELECT *
FROM   survey.survey s
JOIN   survey.questions q ON s.idsurvey = q.survey_id
WHERE  idsurvey = 1

关于mysql - select * from table1, table2 其中 table1.id = 1 显示具有其他 id 的值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53795868/

相关文章:

php - 删除或替换不正确的字符串

mysql - 我从官方网站安装了 mysql 5.1,但遇到了问题

MySQL 调用用户名而不是 ID 来显示?

mysql - 在 mysql 查询中使用 IST 时间

mysql - 你好,我有一个 MYSQL 表,我想防止 3 列中出现相同的数据,它就像 :

java - Hibernate JPA - PESSIMISTIC.WRITE 不起作用

MySQL 动态数据透视表

php - 具有 3 列的 MYsql GROUP_CONCAT 在 PHP 中执行

mysql - 从 SQL 中的位置表获取最新价格

php - SQL WHERE 如果字段被序列化