请问 SQL (mysql) 如何查询相同 ID下某一列全部相同的 sql 语句怎么写?

发布于 2022-09-11 18:26:05 字数 409 浏览 20 评论 0

表名称 为:egg_school_en_user_data_word_log

clipboard.png

例如以上的图相同ID 'wextid' 下 某一列 'result' 全部等于 error 的

正确将查询出 wextid 为 5528 的数据
而 wextid 为 2628 的数据 因为其中有一行 'result' 为 correct 所有不应该被查处。

我的目的 是指 在 wextid 相同情况下,result 必须全部为 error 的值。 我需要的是 如果上图中 第 5行(ID为730) 的 result 变成error 那么将查询出 5528,2628 个值 的SQL语句。

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(5

深者入戏 2022-09-18 18:26:06

SELECT * FROM t_test WHERE wextid IN (

SELECT wextid FROM 
(SELECT wextid ,
SUM(CASE WHEN result='error' THEN 1 ELSE 0 END) AS num1,
SUM(CASE WHEN result='correct' THEN 1 ELSE 0 END) AS num2 

FROM t_test GROUP BY wextid ) b
WHERE num2=0)

子查询 性能可能不行

筱武穆 2022-09-18 18:26:05

我会选择php处理
查出所有result = error的id数组A
查出所有result != error的id数组B
array_diff(A,B);

天赋异禀 2022-09-18 18:26:05
select * from 
    (select wextid,result 
    from t_test 
    group by wextid,result) a 
 group by wextid 
 having count(1)=1 and result = 'error'
想挽留 2022-09-18 18:26:05
select * from egg_school_en_user_data_word_log

 a where not exists(select wextid from egg_school_en_user_data_word_log

 b where a.wextid=b.wextid and b.result="correct");

可以再优化下。

软糯酥胸 2022-09-18 18:26:05

我经常这么写,不用join也不用嵌套,一层select就可以:

select wextid
from egg_school_en_user_data_word_log 
group by wextid
having group_concat(distinct result) = "error"

这句的关键就在于里having里可以用group_concat把不同的result给链接起来,若结果为"error"即为符合条件。

希望能帮助到你。

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文