“限制 1”SQL 查询给出超过 1 个结果

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

我想做的是:对于给定的英语 ID,选择共享该 ID 的所有西班牙语句子。但是,尽管将英语限制设置为 1,但某些结果仍返回具有不同 id 的多个句子。英语表不会重复 ID,但西班牙语表会重复。我在这里错过了一些非常明显的东西吗?使用 MySQL/PopSQL。

SELECT spanish.sentence 
FROM spanish
WHERE spanish.id = (
    SELECT english.id 
    FROM english
    ORDER BY RAND()
    LIMIT 1
);

示例数据:

西班牙语

身份证 句子
1 一个奇科
2 un jugador
2 una jugadora
3 una mujer

英语

身份证 句子
1 一个男孩
2 一个玩家
3 一个女人

因此,随机选择英语“2”的预期结果将是“un jugador”和“una jugadora”。但有时我收到的是“un chico”和“una jugadora”(2 个不同的 ID),并将 ID 限制设置为 1。

sql mysql
1个回答
0
投票

在内部或嵌套查询中使用 limit 将仅限制内部查询的结果,而不是整个查询。如果我理解正确的话,您想要选择与每个英语句子或 id 相对应的所有西班牙语句子。如果是这种情况,使用左连接将达到您的目的,因为您可以使用下面的查询来满足该目的。

select english.id, english.sentence, spanish.sentence from english left join spanish on spanish.id = english.id

现在,如果您只想查询特定的英语 ID,则必须在 sql 语句中使用 where ,如下所示。

select english.id, english.sentence, spanish.sentence from english left join spanish on spanish.id = english.id
where english.id = 2

使用限制 1 将仅限制从 sql 查询返回的行数。

© www.soinside.com 2019 - 2024. All rights reserved.