mysql - 尝试选择 distrinct 时出现语法错误或访问冲突
问题描述
老实说,我不确定为什么会出现错误,因为我只是将两个选择移到了 distrinct 并在左外连接中,但它们之前在主打开选择语句中工作
SELECT body, timestamp FROM chats
LEFT OUTER JOIN messages ON chats.id = messages.chat_id
LEFT OUTER JOIN (SELECT DISTINCT sender.first_name AS sender_first_name, sender.last_name AS sender_last_name,
sender.username AS sender_username) users AS sender ON chats.from_user_id = sender.id
LEFT OUTER JOIN (SELECT DISTINCT reciever.first_name AS reciever_first_name, reciever.last_name AS reciever_last_name,
reciever.username AS reciever_username) users AS reciever ON chats.to_user_id = reciever.id
WHERE from_user_id = :fromUserId AND to_user_id = :toUserId
还尝试使用 FROM 子句
LEFT OUTER JOIN (SELECT DISTINCT sender.first_name AS sender_first_name, sender.last_name AS sender_last_name,
sender.username AS sender_username FROM users) users AS sender ON chats.from_user_id = sender.id
解决方案
这不是一个有效的子查询:
(SELECT DISTINCT sender.first_name AS sender_first_name, sender.last_name AS sender_last_name,
sender.username AS sender_username) users AS sender
您还没有解释查询应该做什么,但我推测您想要:
SELECT body, timestamp,
us.first_name AS sender_first_name, us.last_name AS sender_last_name, us.username AS sender_username
ur.first_name AS receiver_first_name, ur.last_name AS receiver_last_name, ur.username AS receiver_username
FROM chats c LEFT OUTER JOIN
messages m
ON c.id = m.chat_id LEFT OUTER JOIN
users us
ON c.from_user_id = us.id LEFT OUTER JOIN
users ur
ON c.to_user_id = ur.id
WHERE c.from_user_id = :fromUserId AND c.to_user_id = :toUserId;
DISTINCT
加入id
. _
推荐阅读
- javascript - 如何使用 JavaScript 在另一个表中创建一个表?
- python-3.x - python中如何提取随机森林的决策规则?
- android - Android - 登录谷歌 AWS Amplify - 模板格式错误:YAML 格式不正确
- flask - Flask WTForms 子表单和一个通用表单内的独立验证
- html - 强制 CSS 背景图像为 HTTPS
- haskell - 缺少结果类型?在函数长度 :: Monad m => ByteString mr -> m (Of Int r)
- docker - docker-compose 不初始化容器环境变量
- idris - 在 REPL 中使用重写
- python - 使用导入的函数保存输出变量
- c - 当您没有可执行文件的源代码时,您可以在 Eclipse 中远程调试共享对象吗?