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

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

这是我的桌子:

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

这是我的图

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

我也尝试过规范化我的表,我还希望查询返回类似结果的示例表(Questions表),因为我想查询在此图像中生成的where idsurvey = 1,该表仅显示2个结果。 :
mysql - 从表1,表2中选择*,其中表1.ID = 1显示具有其他ID的值-LMLPHP

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

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 - 从表1,表2中选择*,其中表1.ID = 1显示具有其他ID的值,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/53795868/

10-09 13:07