mysql 仅选择未分配给任何其他值的唯一值

标签 mysql

我的数据库看起来像这样

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/

相关文章:

php - 如何将图像上传到具有多对多关系的表单?

mysql - 如何使用mysql获取当月每周的开始日期和结束日期?

php - 用email而不是id做用户操作有什么问题吗?

mysql - IFNULL 和 IF 之间的区别

mysql - 无法使用 Fluent Migrator 更改具有主键的表

MySQL:在一次查询中从一些服务器中进行多项选择?

MySql 用 SUM() 缓慢连接结果

php - mysql 匹配...通过引用字符串变量

mysql - 如何获取学生每月的出勤报告?

java - 在java桌面应用程序中嵌入mysql