大家好我在mysql中有这个错误,用以下查询,我不知道哪里出错了,谢谢你的帮助:)
SELECT a.*,b.*,users.*,
(SELECT p.msg_text,p.occured_at
FROM message_private p
WHERE p.group_id=a.group_id
ORDER BY p.occured_at DESC LIMIT 1) as message,
f.countf,message.occured_at
FROM message_group a
INNER JOIN message_group b ON a.group_id=b.group_id
INNER JOIN users ON users.profile_id = b.profile_id
LEFT JOIN
(
SELECT COUNT(profile_id) countf, id_group
FROM message_view
WHERE profile_id = 'sN07X2'
GROUP BY id_group
) f
on f.id_group = b.group_id
WHERE a.profile_id = 'sN07X2'
AND b.profile_id != a.profile_id
AND countf > 0
ORDER BY p.occured_at DESC
LIMIT 9
答案 0 :(得分:1)
查询中的字段列表是
SELECT a.*,b.*,users.*,
(SELECT p.msg_text,p.occured_at
FROM message_private p
WHERE p.group_id=a.group_id
ORDER BY p.occured_at DESC LIMIT 1) as message,
f.countf,message.occured_at
这将子查询的结果别名为message
。
但是,子查询选择了两列。
答案 1 :(得分:1)
这:
(SELECT p.msg_text,p.occured_at
FROM message_private p
WHERE p.group_id=a.group_id
ORDER BY p.occured_at DESC LIMIT 1) as message
应返回1值并返回2,这就是错误发生的原因
解决方案1:
CONCAT(p.msg_text,p.occured_at )
解决方案2:
有2个子查询,一个用于p.msg_text
,另一个用于p.occured_at