Как включить LIMIT для DELETE в SQLite? - PullRequest
7 голосов
/ 01 декабря 2009

Используя PHP, у меня есть простая база данных, которая может хранить несколько элементов с одинаковым содержимым. Я хочу удалить первое вхождение экземпляра, когда использую DELETE.

Как включить LIMIT для DELETE в SQLite с использованием PHP?

Ответы [ 4 ]

19 голосов
/ 20 июля 2012

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

DELETE FROM Foo
WHERE someColumn in
(
  SELECT someColumn FROM FOO WHERE SomeCondition LIMIT 200
)
12 голосов
/ 01 октября 2012
DELETE FROM table WHERE rowid = (SELECT rowid FROM table WHERE condition LIMIT 1 )
9 голосов
/ 01 декабря 2009

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

Если вы работаете в Unix, возьмите архив sqlite-3.6.20.tar.gz и загрузите его. Тогда:

tar xzf sqlite-3.6.20.tar.gz
cd sqlite-3.6.20
export CFLAGS='-DSQLITE_ENABLE_UPDATE_DELETE_LIMIT=1'
./configure
make

Тогда у вас будет утилита командной строки sqlite3 и файлы библиотеки в подкаталоге .libs.

3 голосов
/ 01 декабря 2009

Начиная с здесь , кажется, что вы должны скомпилировать исходный код SQLite, используя

#define SQLITE_ENABLE_UPDATE_DELETE_LIMIT

чтобы включить его.

...