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

Laravel

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

welcome come back
《L05 电商实战》
从零开发一个电商项目,功能包括电商后台、商品 & SKU 管理、购物车、订单管理、支付宝支付、微信支付、订单退款流程、优惠券等
《L03 构架 API 服务器》
你将学到如 RESTFul 设计风格、PostMan 的使用、OAuth 流程,JWT 概念及使用 和 API 开发相关的进阶知识。
最佳答案

单条件直接使用

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年前 评论

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