2009-12-01 16 views
7

Uso de PHP, tengo una base de datos simple que puede almacenar varios elementos con el mismo contenido. Quiero eliminar la primera aparición de una instancia cuando uso DELETE.¿Cómo habilita LIMIT para DELETE en SQLite?

Cómo hacerlo LÍMITE para BORRAR en SQLite usando PHP?

Respuesta

9

No puede habilitar estas opciones desde PHP, necesita compilar SQLite usted mismo para habilitar estas opciones. Es importante destacar que es necesario descargar la versión completa , no la liberación fuente amalgama deSQLite download page.

Si está en Unix, obtener el paquete de archivos sqlite-3.6.20.tar.gz y descargarlo. Entonces:

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

entonces tendrás la utilidad sqlite3 de línea de comandos y los archivos de la biblioteca en la .libs subdirectorio.

+0

Sé que no hizo esto, pero ¿por qué mi pregunta fue bloqueada? – user5243421

+0

Descubrí que no funcionaba, la versión que uso es 3.7.6.2. ¿Alguna otra idea? –

2

De here, parece que hay que compilar el código fuente usando SQLite

#define SQLITE_ENABLE_UPDATE_DELETE_LIMIT 

con el fin de habilitarlo.

+0

Vaya, que debería haber notado que estoy haciendo esto con php. – user5243421

16

Usted puede utilizar con límite de selección y se puede combinar seleccione y elimine como:

DELETE FROM Foo 
WHERE someColumn in 
(
    SELECT someColumn FROM FOO WHERE SomeCondition LIMIT 200 
) 
+0

Truco inteligente. Una cosa más: es más seguro usar la columna PK para 'someColumn'. – guneysus

10
DELETE FROM table WHERE rowid = (SELECT rowid FROM table WHERE condition LIMIT 1) 
+0

O: DELETE FROM tabla WHERE rowid IN (SELECT rowid FROM tabla WHERE condición LÍMITE amount_of_rows) – LionKing

+0

trabajado para mí. Gracias – IndieBoy