我只是看不出我如何制作外键的问题,而且我真的很困惑为什么我总是得到错误的结果。这是我工作台的截图
这是我的表格:
这是我的图表
我也尝试规范化我的表,我有点期待我的查询返回类似示例表(问题表)中的结果,因为我想查询 where idsurvey,它只会显示 2 个结果= 1
我在这张图片中制作的:
我的问题是,如果我想查询,我该如何修复我的外键
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/