Mysql:选择与多行上的多个条件匹配的值

标签 mysql join

晚上好

我有两个表 t1 和 t2

在 t1 中,我有两个变量,ID(唯一标识每一行)和 DOC(多个 ID 可以通用)

在 t2 中,我有三个变量,ID(不一定唯一标识此处的行)、AUTH 和 TYPE。每个 ID 最多有 1 个不同的 AUTH。

示例数据:

我想做的是选择 ID 为 AUTH='EP' 且 ID 为 AUTH='US' 的 DOC。他们可以有其他 AUTH 的额外 ID,但他们必须至少有这两个。

因此,我将有一个包含 DOC、ID 和 AUTH 的最终表(每个文档应该至少有 2 个 ID,但如果此 DOC 存在对 US 和 EP 的额外 AUTH,则可能更多)

期望的结果:

最佳答案

这应该有效:

SELECT DISTINCT (T1.ID), T1.DOC, T2.AUTH FROM T1 
LEFT JOIN T2 ON T2.ID = T1.ID 
WHERE T1.DOC IN( SELECT T1.DOC FROM T2 
               LEFT JOIN T1 ON T1.ID = T2.ID  
               WHERE T2.AUTH IN('EP','US') 
               GROUP BY T1.DOC HAVING COUNT(DISTINCT T2.AUTH) = 2) ;

关于Mysql:选择与多行上的多个条件匹配的值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39646530/

相关文章:

MySQL 根据另一个表值更新表

php - 使用 Join 查找 3 个表之间的特定值

mysql - SQL : Multiple left joins with similar tables

php - 复杂的 SQL(可能是外连接)

mysql - 使用 JOIN 的简单 MySQL SELECT 的查询时间较长

带有 case 语句的 Mysql SUM

mysql - 获取已开具发票的总计和每个客户的欠款

mysql - 数据中的换行符和回车符 : 0D 0A

MySQL 查询的细化

php - 使用 PHP 和 jSON 从 MySQL 获取 UIImage