从 table1、table2 中选择 *,其中 table1.id = 1 显示具有其他 id 的值

问题描述 投票:0回答:1

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

enter image description here

这是我的桌子:

enter image description here enter image description here

这是我的图表

enter image description here

我也尝试标准化我的表格,我有点希望我的查询返回类似的结果,就像示例表(问题表)中那样,它只会显示 2 个结果,因为我想查询

where idsurvey = 1
我在这个中做了图像: enter image description here

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

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

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

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

sql mysql select
1个回答
1
投票

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
© www.soinside.com 2019 - 2024. All rights reserved.