2013-07-04 2 views
0

Привет, ребята, у меня есть эта ошибка в MySQL с помощью следующего запроса, я не знаю, где сделать ошибку, спасибо за помощь :)# 1241 - Операнд должен содержать 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 
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 

ответ

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.

НО, подзапрос выбирает два столбца.

+0

+1 думаю, что – Stephan

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

Смежные вопросы