我有一个表数据
:
+-------+-----------+------+-------+-------------+
| id | client_id | type | name | status |
+-------+-----------+------+-------+-------------+
| 523 | 2 | one | a | verified |
| 526 | 1 | one | a | verified |
| 527 | 1 | one | b | verified |
| 527 | 1 | two | b | verified |
+-------+-----------+------+---------------+-----+
我需要获取 client_id
的那些 where type='one' and name='a' and status='verified''
AND DON' T 有一条记录,其中 type=one
和 name=b
在上面的表格中,结果将包括 client_id = 2
。
如何编写这样的查询?
最佳答案
您可以使用带有 NOT EXISTS
条件的相关 suqbuery 来过滤掉不需要的记录(即存在具有相同 client_id
的另一条记录的记录,其中 >type = 'one'
和 name = 'b'
)
SELECT *
FROM data d
WHERE
type = 'one'
AND name = 'a'
AND status = 'verified'
AND NOT EXISTS (
SELECT 1
FROM data d1
WHERE d1.client_id = d.client_id AND d1.type = 'one' and d1.name = 'b'
)
关于MySql:在记录不存在的情况下两次连接同一个表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55291326/