我的数据库看起来像这样
id document_id resource_id language filename
1 11 120 English abc
2 13 120 German ghy
3 56 120 Norway hyu
4 56 156 Norway hyu
5 89 134 Hindi uiy
6 90 120 English qwer
在这里我想获取 resource_id 120 的所有值。所以我可以像这样查询
SELECT * FROM `table` WHERE resource_id = 120
但是正如您在表中看到的那样,只有一列用于 document_id,如果您仔细检查,您会发现 document_id 56 分配给了两个资源。一个用于 120,另一个用于 156。有人可以告诉我如何在 mysql 子查询中检查它吗。
所以我的输出将是它只显示 resource_id 120 的所有数据。如果任何其他资源分配有任何已与 resource_id 120 共享的 document_id,它将不会显示。因此应仅显示 120 个 resource_id 的唯一数据。
到目前为止,我的查询是这样的
SELECT *
FROM `table`
WHERE resource_id = 120
AND `document_id` IN("SELECT `id` FROM `table` WHERE `resource_id` <> 120 ")
那么有人可以告诉我如何获得值(value)吗?任何帮助和建议都将非常感激。谢谢
最佳答案
SELECT
*
FROM
`table`
WHERE
resource_id = 120
AND document_id NOT IN (SELECT document_id FROM `table` WHERE resource_id <> 120);
关于mysql 仅选择未分配给任何其他值的唯一值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36718070/