у новой строки есть специальный смысл в sqlLite?у меня отсутствует база данных (рядом с «SELECT»: синтаксическая ошибка) - PullRequest
0 голосов
/ 16 ноября 2018

Если я удаляю символ новой строки, я внезапно получаю сообщение об ошибке.

отсутствует база данных (рядом с «ВЫБОР»: синтаксическая ошибка)

без новой строки это не 'работать с sqlite - ошибка или нет?От проблемы с IDE Jetbrains?

, если я делаю выбор короче, у меня также больше нет ошибок.

этот выбор дает ошибку:

SELECT * FROM(ВЫБЕРИТЕ отдельное слово, словесное описание, слово-замещение ОТ слов, ГДЕ проиндексированы слова, КАК упорядочено 'gt%' и ActionListID = 1 по ROWID asc LIMIT 10) t2 СОЕДИНЕНИЕ ВСЕ ВЫБРАТЬ * ОТ% 'и ActionListID = 1 порядок по ROWID desc LIMIT 10) t3 UNION ALL SELECT * FROM (ВЫБЕРИТЕ отдельное слово, worddescription, wordreplacement FROM Words ГДЕ индексируется как «% gt%» и ActionListID = 1 LIMIT 2) t4 SELECT * FROM (SELECTотдельное слово, словесное обозначение, замещение слова ИЗ слов, ГДЕ слово индексируется как «gt%» LIMIT 2) t5 SELECT * FROM (ВЫБРАТЬ отдельное слово, словесное слово, замещение слова ИЗ слов ГДЕ слово индексируется как «% gt% 'LIMIT 2) предел t6 10;

то же самое со всеми новыми строками и без ошибок:

SELECT * FROM (
SELECT distinct word, worddescription, wordreplacement
     FROM Words
     WHERE wordindexed LIKE 's%'
     and   ActionListID > 0
     order by ROWID asc
     LIMIT 10
     ) t2
UNION ALL
SELECT *
...

Извините, мне пришлось выложить его снаружи, потому что эта поверхность веб-интерфейса не позволяла иначе.https://gist.github.com/sl5net/731c5ef0cd7c68dbddc86bc26cc5838f

enter image description here enter image description here enter image description here

Я использую:

IntelliJ IDEA 2018.2.5 (Ultimate Edition) JRE: 1.8.0_152-release-1248-b19 amd64 JVM: Виртуальная 64-разрядная серверная виртуальная машина OpenJDK от JetBrains sro Windows 10 10.0

1 Ответ

0 голосов
/ 16 ноября 2018

После суб-выбора T4 и t5 вы пропускаете UNION ALL.

Также нет необходимости использовать подвыборы для UNION. Вы можете использовать их непосредственно вместо SELECT * FROM.

SELECT * FROM (
    SELECT distinct word, worddescription, wordreplacement
    FROM Words
    WHERE wordindexed LIKE 'gt%' and ActionListID = 1
    order by ROWID asc
    LIMIT 10

    UNION ALL

    SELECT distinct word, worddescription, wordreplacement
    FROM Words
    WHERE wordindexed GLOB '%gt%' and ActionListID = 1
    order by ROWID desc
    LIMIT 10

    UNION ALL

    SELECT distinct word, worddescription, wordreplacement
    FROM Words
    WHERE wordindexed like '%gt%' and ActionListID = 1
    LIMIT 2

    UNION ALL

    SELECT distinct word, worddescription, wordreplacement
    FROM Words
    WHERE wordindexed like 'gt%'
    LIMIT 2

    UNION ALL

    SELECT distinct word, worddescription, wordreplacement
    FROM Words
    WHERE wordindexed like '%gt%' LIMIT 2
) limit 10;

Вместо этого используйте SELECT, включающий все выбранные объединения, для выполнения последнего limit 10.

...