首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >SQLITE检查id是否有一定的值

SQLITE检查id是否有一定的值
EN

Stack Overflow用户
提问于 2018-04-09 11:58:19
回答 2查看 88关注 0票数 1

我有这样一个SQLITE表:

代码语言:javascript
运行
复制
id      key      value
244574  16       999
244574  18       999
244574  54       174
214808  16       662
214808  17       808
214808  33       1
214808  60       2
214809  16       902 
214809  17       1103
214809  33       1
214809  60       2
218965  19       808
218965  21       662
218965  33       1
218965  60       8
218966  19       1103
218966  21       902
218966  33       1
218966  60       8

小提琴:单击此处

现在,我尝试获取一个is列表,其中键不是60或键为60,值= 8。

代码语言:javascript
运行
复制
select * from items_attributes where (key != 60) OR (key = 60 AND value = 8);

我得到那些键不是60的行。但我只想得到三行结果:

代码语言:javascript
运行
复制
id      key           value
244574  [16;18;54]    [999;999;174]
218965  [19;21;33;60] [808;662;1;8]
218966  [19;21;33;60] [1103;902;1;8]

由于我在SQL方面是个初学者,所以我可以只想到一个带有concat的解决方案,但我对tbh一无所知。也许有人能在这里帮我。

提前感谢!

向你问好,安德烈亚斯

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2018-04-09 12:38:37

不如:

代码语言:javascript
运行
复制
select 
    id,
    '[' || group_concat(key, ';') || ']',
    '[' || group_concat(value, ';') || ']'
from items_attributes
group by id
having 
    -- no rows with key 60 for this id
    count(case when key = 60 then 1 end) = 0 
or 
    -- 1 or more rows with key 60 & value 8 for this id
    count(case when key = 60 and value = 8 then 1 end) > 0
票数 2
EN

Stack Overflow用户

发布于 2018-04-09 12:25:49

我不知道你怎么能得到三排。然而,以下查询:

代码语言:javascript
运行
复制
SELECT 
    id, 
    '['||group_concat(key,';')||']' AS key_group, 
    '['||group_concat(value,';')||']' AS value_group
FROM items_attributes 
WHERE (key != 60) OR (key = 60 AND value = 8) 
GROUP BY id;

结果如下:-

我现在明白了。这似乎是你所希望的:-

代码语言:javascript
运行
复制
SELECT 
    id, 
    '['||group_concat(key,';')||']' AS key, 
    '['||group_concat(value,';')||']' AS value 
FROM items_attributes WHERE id NOT IN(
    SELECT id FROM items_attributes WHERE (key = 60 AND value != 8))
GROUP by id ORDER BY id DESC;

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/49732422

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档