如果一个字段是某某,那么就排除另一个字段为某某的记录,怎么查询呢?

Laravel

这是聊天数据,system是系统通知,1是对方的系统消息,如何排除 channel=syestem & role=1的记录呢,sql该怎么写呢?谢谢

welcome come back
《L04 微信小程序从零到发布》
从小程序个人账户申请开始,带你一步步进行开发一个微信小程序,直到提交微信控制台上线发布。
《L02 从零构建论坛系统》
以构建论坛项目 LaraBBS 为线索,展开对 Laravel 框架的全面学习。应用程序架构思路贴近 Laravel 框架的设计哲学。
最佳答案

单条件直接使用

SELECT columns FROM table WHERE channel = 'system' AND role = 1;

多条件

SELECT columns FROM table WHERE (channel = 'system' AND role = 1) OR (channel = 'chat' AND role = 0);

多条件也可使用IF THEN,但你这个不复杂没必要。 单条件不说如何在laravel写出来了,多条件使用where闭包,之后用orWhere闭包

3年前 评论
讨论数量: 5

select id from table where channel=‘syestem’ and role in(排除1的role_id_list)

3年前 评论

@sukangshen 还有别的channel呢,这样只能筛选出system的

3年前 评论

可以利用 left join取差集

SELECT
    a.* 
FROM
    records a
    LEFT JOIN ( SELECT id FROM records WHERE channel = 'system' AND role = 1 ) b ON a.id = b.id 
WHERE
    b.id IS NULL
3年前 评论
laravelcc 3年前

单条件直接使用

SELECT columns FROM table WHERE channel = 'system' AND role = 1;

多条件

SELECT columns FROM table WHERE (channel = 'system' AND role = 1) OR (channel = 'chat' AND role = 0);

多条件也可使用IF THEN,但你这个不复杂没必要。 单条件不说如何在laravel写出来了,多条件使用where闭包,之后用orWhere闭包

3年前 评论

讨论应以学习和精进为目的。请勿发布不友善或者负能量的内容,与人为善,比聪明更重要!