gpt4 book ai didi

mysql - 具有多个条件的单列 SQL 过滤

转载 作者:行者123 更新时间:2023-11-29 04:38:23 26 4
gpt4 key购买 nike

对 SQL 还很陌生,我并不完全熟悉正确的语法。

我有一个表,其中有一列具有一对多关系。我需要为一个值过滤列,而不是其他值。

数据如下:

| USER KEY | USER ID |
| ------ | ------- |
| 11672 | SSO |
| 11672 | SSO |
| 11672 | DIRECT |
| 11203 | SSO |
| 11205 | SSO |
| 11206 | DIRECT |

因此您可以看到用户 key 可以同时具有 SSO 和 DIRECT 或仅 SSO 或仅 Direct 。我需要过滤用户 key ,以便:

一个。包括那些只有 DIRECT 的 USER KEYS

B.排除所有那些同时具有 SSO 和 DIRECT 的 USER KEYS

我从这个选择语句开始:

SELECT *
FROM USER_ID
WHERE USER_ID_TYPE = 'DIRECT'
OR (USER_ID_TYPE != 'SSO');

这会返回所有使用 Direct 的用户,无论他们是否同时具有 SSO 和 DIRECT。我不知道过滤掉同时具有两者的其他 USER_KEY 的语法是什么。我读过的大多数教程都非常基础,不会像这样深入到复杂的过滤。

如有任何帮助,我们将不胜感激。

P

最佳答案

您的查询是针对单行执行这两项测试,而不是针对具有相同 USER_KEY 的所有行。你需要这样的东西:

SELECT *
FROM USER_ID AS u1
WHERE USER_ID_TYPE 'DIRECT'
AND NOT EXISTS (
SELECT *
FROM USER_ID AS u2
WHERE u1.USER_KEY = u2.USER_KEY
AND u2.USER_ID_TYPE = 'SSO')

或等效的LEFT JOIN

SELECT u1.*
FROM USER_ID AS u1
LEFT JOIN USER_ID AS u2 ON u1.USER_KEY = u2.USER_KEY AND u2.USER_ID_TYPE = 'SSO'
WHERE u1.USER_ID_TYPE = 'DIRECT'
AND u2.USER_KEY IS NULL

关于mysql - 具有多个条件的单列 SQL 过滤,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35635718/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com