SQLite: определить, существует ли rowid - PullRequest
1 голос
/ 28 марта 2012

Какой самый лучший / правильный / самый быстрый / наиболее подходящий способ определить, существует ли строка с данным rowid?

Или, по расширению, hwo, чтобы определить, существует ли хотя бы одна строка, соответствующая данному условию?

Я запускаю некоторые из этих запросов. Я сейчас использую

SELECT 1 FROM table WHERE condition LIMIT 1

выглядит немного странно для меня, но выглядит для меня как "наименьшая работа" для БД, однако мои знания SQL не очень точные.

Ответы [ 5 ]

3 голосов
/ 28 марта 2012

Я бы, наверное, сделал это примерно так:

SELECT
    CASE 
        WHEN EXISTS(SELECT NULL FROM table1 WHERE ID=someid)
        THEN 1
        ELSE 0
    END

До Count строки не так эффективны.

Чтобы проверить, является ли что-то exists в большинстве случаев более эффективным

1 голос
/ 11 декабря 2014

Поскольку это sqlite, вам нужно использовать имя столбца «rowid» для доступа к этому столбцу id.Используя sql Крейга Рингера, версия sqlite будет выглядеть так:

SELECT EXISTS(SELECT 1 FROM table WHERE rowid = insert_number)    
1 голос
/ 28 марта 2012

Используйте EXISTS, это звучит идеально для того, что вы ищете.например,

SELECT *
FROM T1
WHERE EXISTS (SELECT 1 FROM T2 WHERE T2.X = T1.X AND T2.Y = 1)

По сути, это то же самое, что и LIMIT 1, но обычно оптимизируется лучше.

0 голосов
/ 28 марта 2012

Можно было бы проверить

select true from table where id = id1
0 голосов
/ 28 марта 2012

Вы можете, например, использовать

SELECT COUNT(*) FROM table WHERE ID = whatever
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...