从一个表中选择所有元素,并检查它们是不是与另一个表匹配

Posted

技术标签:

【中文标题】从一个表中选择所有元素,并检查它们是不是与另一个表匹配【英文标题】:Select all elements from a table, and check if they match to another table从一个表中选择所有元素,并检查它们是否与另一个表匹配 【发布时间】:2014-12-10 14:21:18 【问题描述】:

我有两个表,我想从第一个表中获取所有实体,然后检查它们是否可以与另一个表中的特定实体相关。如果它们可以关联,则数据库返回 1(或 true),否则返回 NULL(或 false)。

我尝试了一些使用 LEFT JOIN 的方法,但它们都不起作用。我认为解决方案很简单,但我无法弄清楚......

上下文: 在我的应用程序中,我提出了两个请求,第一个请求从 oneTable 中获取所有实体,第二个请求从 anotherTable 中获取所有 idOT,其中 idAT 等于 2,然后,我创建一个循环我保存第一个请求中的所有实体,并在这个循环中创建另一个循环,检查当前元素是否存在于第二个请求中。我认为他们的这个解决方案很繁重(两个请求和重叠的循环),所以我尝试直接在一个请求中完成。

感谢你们的帮助!我希望它不会让你浪费时间......

编辑: @Strawberry 在 cmets 中给了我答案,我在做

SELECT * FROM oneTable LEFT JOIN anotherTable ON oneTable.idOT = anotherTable.idOT **WHERE** anotherTable.idAT = 2

而不是

SELECT * FROM oneTable LEFT JOIN anotherTable ON oneTable.idOT = anotherTable.idOT **AND** anotherTable.idAT = 2 

就这么简单......再次感谢你们。

【问题讨论】:

也许这会有所帮助:lh5.ggpht.com/-fnOQYPFr8D0/UagAzBIgMvI/AAAAAAAABbo/3fBL5Fm3Y9Y/… 我们可以看到您尝试左连接吗?如果我们关心浪费时间,我们可能不会在这里;-) 类似的东西:SELECT * FROM oneTable LEFT JOIN anotherTable ON oneTable.idOT = anotherTable.idOT WHERE anotherTable.idAT = 2。但我需要 oneTable 中的所有实体... 谢谢@Strawberry 我知道这很简单(我以为我已经尝试过了,但显然没有^^)。也感谢安德鲁的帮助。我觉得很菜鸟... 【参考方案1】:

感谢问题的cmets,正确的请求是:

SELECT * FROM oneTable
LEFT JOIN anotherTable ON oneTable.idOT = anotherTable.idOT
AND anotherTable.idAT = 2;

【讨论】:

以上是关于从一个表中选择所有元素,并检查它们是不是与另一个表匹配的主要内容,如果未能解决你的问题,请参考以下文章

将一个表中的多个值与另一个表中的多个值进行比较

javascript 找到应用于特定元素的所有CSS规则;并检查样式表中是否定义了特定元素的CSS属性 - 而不是

选择表中的列与另一个表中的列不同的数据

如何通过将一个表中的 id 与另一个表匹配来选择和更新一个表中的记录?

如何在sql中检查表中是不是存在所有元素?

快速选择另一个表中具有“1 个或多个”匹配行的所有行