从表1,表2中选择*,其中表1.ID = 1,显示具有其他ID的值

时间:2018-12-15 18:04:33

标签: mysql

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

enter image description here

这是我的桌子:

enter image description here enter image description here

这是我的图

enter image description here

我也试图规范化我的表,我还希望查询返回类似结果的示例表(Questions表),因为我想查询where idsurvey = 1,所以该表仅显示2个结果。我在这张图片中做了: enter image description here

我的问题是,如何修复我的外键,以便查询?

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

它只会返回2行吗? (基于工作台屏幕快照中的示例数据)

对图表的任何评论和建议也将不胜感激。

1 个答案:

答案 0 :(得分:0)

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