2012-06-23 4 views
1

Пожалуйста, помогите мне найти sqlite-эквивалент нижеследующего запроса. Пробовал много искать.Соответствующий синтаксис запроса Sqlite для запроса Mysql

SET @rownum := 0; 
SELECT * FROM (
SELECT @rownum := @rownum+1 AS rank, id 
FROM tbl_flight 
ORDER BY id DESC 
) AS tbl_flight WHERE id = 2 
+0

Пожалуйста, объясните, что вы пытаетесь сделать (то, что ваш запрос должен возвращать) в вашем вопросе, так что люди с подобными проблемами могут найти этот вопрос в будущем. (Может также помочь людям, знакомым с sqlite, но не mysql, чтобы дать вам ответ.) – Mat

ответ

2

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

http://sqlfiddle.com/#!5/f0a1b/8 (Вы не можете запустить скрипку в два раза, вы должны всегда перестраивать схему первым перед запуском его снова)

DROP TABLE IF EXISTS tmp; 

CREATE TEMPORARY TABLE tmp AS 
    SELECT id 
    FROM tbl_flight 
    ORDER BY id DESC; 

SELECT tmp.rowid AS rank, tmp.id FROM tmp WHERE id=2; 
+0

Интересно, что если вы переключитесь на SQLite (WebSQL) и запустите свой код в этой среде, вы не получите эту ошибку ввода/вывода: http://sqlfiddle.com/#!7/f0a1b/2 Должно быть что-то странное с SQL.js –

+0

Также эта версия, похоже, не имеет такой проблемы: http://sqlfiddle.com/#!5/f0a1b/ 10 –

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