mysql - 在 MySQL 中选择所有带有 WHERE 子句的行

标签 mysql sql select join left-join

我有两个表: 第一个有这些列:

id 
sender 
recipient 
description
date

第二个有这些列:

id
name

senderrecipient 是引用第二个表的id 的外键。

我尝试选择第一个表中的所有行。

SELECT a.id, a.description, b.name as sender, b.name as recipient, a.date FROM table_A a JOIN table_B b WHERE a.sender=b.id AND a.recipient=b.id ORDER BY date DESC

但它只显示发件人 = 收件人的行。如何显示每行中包含唯一数据的所有行?

最佳答案

使用 LEFT JOIN 而不是 INNER JOIN

试试这个:

SELECT a.id, a.description, b.name AS sender, c.name AS recipient, a.date 
FROM table_A a 
LEFT JOIN table_B b ON a.sender = b.id 
LEFT JOIN table_B c ON a.recipient = c.id 
ORDER BY a.date DESC;

关于mysql - 在 MySQL 中选择所有带有 WHERE 子句的行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20782873/

相关文章:

MySQL:有效地填充存储过程中的表

c# - 在C#中调用MySql函数来验证用户名和密码

php - 从平面数组和结构化 ID 构建数组树

多个表上的 SQL 求和函数和计数函数会产生相乘的值

sql - 多个参数值

mysql - 获取 SELECT 语句以使用 STR_TO_DATE

php - 如何同时在两个文档中从 MySQL 中获取相同的 Random() 数据?

mysql - 我如何通过更改/更新来计算项目状态

c# - 如何将 CLOB 字段读入 C# 变量?

mySQL插入和选择及位置问题