mysql - 选择左连接值不同的行mysql

标签 mysql sql

我有一个表 messages 和一个表 deleted_messages 每次触发消息的删除操作而不是删除记录 我在 上创建一个新记录deleted_messages 表。然后我想在 deleted_messages 上检索没有删除消息的消息。

ps:我这里不使用软删除,因为很多用户可以自己删除消息,但不能删除其他用户

我的模式:

用户表

id | name 

消息表

id | user_id | message

deleted_messages

id | message_id | user_id

我试图执行以获取用户 1 的所有消息而不删除已删除消息的查询如下,但它返回 0 行:

select *
from messages 
left join deleted_messages on deleted_messages.message_id = messages.id
where deleted_messages.user_id != 1

看看SQLFiddle它应该收到 2 条消息,但它返回 null。

最佳答案

在左连接子句中加入were条件

select *
from messages 
left join deleted_messages on deleted_messages.message_id = messages.id
and  deleted_messages.user_id = 1
where deleted_messages.message_id is  null

sqlFiddle

关于mysql - 选择左连接值不同的行mysql,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23608624/

相关文章:

java - MySQL 工作台未连接到数据库

javascript - sql 注入(inject) - 如何清理程序生成的 sql 子句?

java - SQL、JAVA 从 SQL 输出中删除重复字符串、数组排序

mysql - SQL 查询 - 如何找出哪些员工在多个商店工作

php - 尝试使用计数和分组依据构建 mysql 查询

php - 每次刷新表单时都会添加额外记录

mysql - SQL中基于连接多个表的过滤

sql - SQL 中的分析函数 FIRST_VALUE 如何工作

php - 我怎样才能让 mediawiki 在每个数据库错误时给我发电子邮件?

mysql - 如何避免 FindAll 条件默认设置为 "undefined"