gpt4 book ai didi

mysql - 选择列值以字符串开头且不以字符串开头的行

转载 作者:行者123 更新时间:2023-12-01 00:34:54 25 4
gpt4 key购买 nike

考虑以下行

name    StringValue
foo Mac123

foo Windows123

foo Andorid123

bar Windows123

bar Andorid123

dumb Windows123

这是从下面的查询返回的结果元组:

select name, stringValue from TABLE1 A, TABLE2 B, TABLE13 C
where A.id = B.id
and B.id = C.id
GROUP BY name, stringValue

如果名称的字符串值不包含以“Mac”开头的字符串,但还需要包含以“Windows”开头的值,如何选择名称

这应该返回

name
bar
dumb

我有什么:

select name, stringValue from TABLE1 A, TABLE2 B, TABLE13 C
where A.id = B.id
and B.id = C.id
GROUP BY name, stringValue
Having stringValue LIKE "Windows" and stringValue not LIKE "Mac"

问题:以上查询返回所有以名称“Windows”开头的列。因为如果前半个条件为真,则后半个条件也为真。

我认为问题与我没有按我想要的方式工作有关..

我如何修改查询以便它返回所有名称,其中具有此名称的任何列将具有不以 Mac 开头但也以 Windows 开头的字符串值。

最佳答案

不需要连接。应该使用特定的 HAVING 子句进行聚合:

SELECT name
FROM t
GROUP BY name
HAVING COUNT(CASE WHEN stringvalue LIKE 'WINDOWS%' THEN 1 END) > 0
AND COUNT(CASE WHEN stringvalue LIKE 'MAC%' THEN 1 END) = 0;

DB<>Fiddle

关于mysql - 选择列值以字符串开头且不以字符串开头的行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55996352/

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