我想做的是:对于给定的英语 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。
在内部或嵌套查询中使用 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 查询返回的行数。