2015-04-27 3 views
0

У меня есть очень простой MySQL запросПреобразовать запрос из MySQL в sqlite3

select clients.id as selected_id,(select clients.id 
from clients where clients.id=selected_id) 
from clients where clients.id=20 

, когда я запускаю его на MySQL, его работает отлично. Но на sqlite3, тот же запрос бросает

Error: no such column: selected_id

Я попытался погуглить, но большинство решений являются w.r.t. присоединяется. Здесь мне это нужно в пределах выделенной части.

+0

Что такое проблема с использованием ВОШЕЛ? –

+0

вы не можете идентифицировать id как selected_id и использовать его в подзапросе, как это. Вам нужно будет использовать псевдонимы таблиц и присоединяться к их идентификаторам. Это говорит о том, что я не понимаю смысла в вашем запросе. Чего вы пытаетесь достичь? –

+0

Существует большой запрос, уже построенный для работы с MySQL. Теперь мы переносим один и тот же код для работы с sqlite, и нам нужно убедиться, что сделаны минимальные изменения. –

ответ

0

SQLite соответствует стандарту SQL, в котором говорится, что псевдонимы в предложении SELECT используются только для выходных столбцов, но недоступны в самом предложении.

Надлежащим образом использовать коррелированный подзапрос, как это переименовать одну из таблиц:

SELECT id AS selected_id, 
     (SELECT id 
     FROM clients AS c2  -- ! 
     where c2.id = clients.id 
     ) AS the_other_id 
FROM clients 
WHERE id = 20 
+0

У меня есть идея. Отлично. благодаря –

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