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

e7arh2l6  于 2021-06-15  发布在  Mysql
关注(0)|答案(1)|浏览(296)

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

这是我的table:


这是我的图表

我也尝试过规范化我的表,我有点期待我的查询会返回类似的结果,就像在示例表(问题表)中一样,因为我想查询,所以它只会显示2个结果 where idsurvey = 1 我在这张照片里说:

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

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

它只返回2行(基于工作台屏幕截图中的示例数据)
对我的图表的任何意见和建议也将不胜感激。

omvjsjqw

omvjsjqw1#

当你有两张table的时候 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

相关问题