我有3张 table
表学生
- 姓名
- 注册
表老师
- 姓名
- 注册
表格消息
- 编号
- 留言
- 发件人身份
- 接收ID
- ts
我想得到与某个人联系的人的姓名和注册表。通过以下查询,我可以获取他们的 regid,但我无法添加 left join
,因为我总是收到错误消息:
(SELECT sender_id AS contact FROM messages WHERE receiver_id = '...')
UNION
(SELECT receiver_id AS contact FROM messages WHERE sender_id = '...')
这就是我开始尝试做的事情:
SELECT teachers.name,
teachers.regid
FROM teachers
LEFT JOIN ((SELECT sender_id AS contact
FROM messages
WHERE receiver_id = '...')
UNION DISTINCT
(SELECT receiver_id AS contact
FROM messages
WHERE sender_id = '...'))
ON t.contact = teachers.regid;
最佳答案
您缺少连接内部查询的别名。
此外,要具有不同的查询联合,您应该只使用 UNION
运算符:
SELECT teachers.name, teachers.regid
FROM teachers
LEFT JOIN ( (SELECT sender_id AS contact
FROM messages
WHERE receiver_id = '...')
UNION
(SELECT receiver_id AS contact
FROM messages
WHERE sender_id = '...') ) t -- here!
ON t.contact = teachers.regid;
关于mysql - 不能将左连接与联合结合,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24712680/