首先我有表 users
+---------+----------+------------------+
| user_id | username | email |
+---------+----------+------------------+
| 1 | User 1 | email1@gmail.com |
| 2 | User 2 | email2@gmail.com |
| 3 | User 3 | email3@gmail.com |
| 4 | User 4 | email4@gmail.com |
+---------+----------+------------------+
接下来我有表 user_announcement
+---------+----------+---------+-----------+
| user_id | annou_id | is_read | read_time |
+---------+----------+---------+-----------+
| 1 | 1 | 0 | Time |
| 2 | 1 | 1 | Time |
| 1 | 2 | 0 | Time |
| 2 | 3 | 1 | Time |
+---------+----------+---------+-----------+
我正在尝试弄清楚如何获取公告 ID 1 的所有用户及其阅读状态 我希望输出有这样的东西
+---------+----------+------------------+----------+---------+-----------+
| user_id | username | email | annou_id | is_read | read_time |
+---------+----------+------------------+----------+---------+-----------+
| 1 | User 1 | email1@gmail.com | 1 | 0 | Time |
| 2 | User 2 | email2@gmail.com | 1 | 1 | Time |
| 3 | User 3 | email3@gmail.com | NULL | NULL | NULL |
| 4 | User 4 | email4@gmail.com | NULL | NULL | NULL |
+---------+----------+------------------+----------+---------+-----------+
我尝试了各种连接,但没有给我想要的结果。
最佳答案
在执行 LEFT JOIN
时,如果您需要过滤第二个表中的列,您应该在 ON
子句中执行。
SELECT *
FROM user u
LEFT JOIN user_announcement ua
ON u.user_id=ua.user_id AND ua.annou_id = 1
关于mysql - 加入两个表,但仍然获得第一个表的完整数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34450002/