Pergunta

Eu tenho uma tabela com linhas N, e eu quero selecionar linhas N-1.

Sugestões sobre como fazer isso em uma consulta, se é possível ..?

Foi útil?

Solução

A última linha tem a maior ID? Se assim for, acho que isso iria funcionar:

SELECT * FROM TABLE WHERE ID != (SELECT MAX(ID) FROM TABLE)

MySQL não permite subselects na versão atual, certo?

No entanto, na maioria dos casos, é provavelmente um melhor desempenho se você selecionou todas as linhas e depois filtrado os dados indesejados na sua aplicação.

Outras dicas

SELECT t1.columns distinta da tabela t1
INNER JOIN tabela t2 ON t1.id

Na minha experiência, MySQL ama esta técnica, voltando várias versões.

Outra técnica não vejo aqui é

SELECT * FROM table ORDER BY id DESC LIMIT 10000 OFFSET 1;

Isto lhe dará os registros ordenados por descendente id excepto o primeiro, isto é, exceto a última na ordem original.
Note-se que com este método você só terá 10.000 registros, no entanto, este número pode ser tão alto quanto você quiser, mas não pode ser omitido.
A vantagem deste método é que você pode encomendar pelo que quiser.
A desvantagem é que ele dá-lhe os registros ordenados do último para o primeiro.
Finalmente ele worths observando que os outros métodos aqui funciona muito bem

Outra maneira de fazer isso poderia ser:

SELECT * FROM table WHERE ID <> LAST_INSERT_ID()

Referência: http: //dev.mysql. com / doc / refman / 5,7 / en / obtendo-unique-id.html

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top