Этот запрос работает
SELECT
*,
(SELECT dtm
FROM vladimir.chatthreadhistory hi
WHERE hi.dtm < ch.created
ORDER BY hi.dtm DESC
LIMIT 1) AS aa
FROM
vladimir.chatmessage ch
ORDER BY
ch.created DESC;
Но если я хочу отобразить больше из второго выбора, я получаю эту ошибку
SELECT *,(SELECT dtm,threadid from vladimir.chatthreadhistory hi where hi.dtm <ch.created ORDER BY hi.dtm DESC limit 1)as aa
FROM vladimir.chatmessage ch order by ch.created DESC;
Можешь мне сказать почему?
1 ответ
Вам нужны два разных коррелированных подзапроса. Вот один способ
SELECT *,
(SELECT dtm
FROM vladimir.chatthreadhistory hi
WHERE hi.dtm < ch.created
ORDER BY hi.dtm DESC limit 1) AS aa,
(SELECT threadid
FROM vladimir.chatthreadhistory hi
WHERE hi.dtm < ch.created
ORDER BY hi.dtm DESC limit 1) AS threadid
FROM vladimir.chatmessage ch
ORDER BY ch.created DESC;
Если ваш DBMS
поддерживает что-то похожее на оператор APPLY
в SQL SERVER
, то в одном запросе мы можем выбрать оба столбца
Похожие вопросы
Новые вопросы
sql
Язык структурированных запросов (SQL) - это язык запросов к базам данных. Вопросы должны включать примеры кода, структуру таблицы, примеры данных и тег для используемой реализации СУБД (например, MySQL, PostgreSQL, Oracle, MS SQL Server, IBM DB2 и т. Д.). Если ваш вопрос относится исключительно к конкретной СУБД (использует определенные расширения / функции), используйте вместо этого тег этой СУБД. Ответы на вопросы, помеченные SQL, должны использовать стандарт ISO / IEC SQL.