web-dev-qa-db-fra.com

Comment sélectionner les 10 dernières lignes d'une table SQL sans champ ID?

J'ai une table MySQL avec 25 000 lignes.

Il s’agit d’un fichier CSV importé, je souhaite donc consulter les dix dernières lignes pour vérifier qu’il a tout importé.

Cependant, comme il n'y a pas de colonne ID, je ne peux pas dire:

SELECT * FROM big_table ORDER BY id DESC

Quelle instruction SQL me montrerait les 10 dernières lignes de cette table?

La structure de la table est simplement la suivante:

columns are: A, B, C, D, ..., AA, AB, AC, ... (like Excel)
all fields are of type TEXT
18
Edward Tanguay

Les tables SQL n'ont pas de classement implicite, l'ordre doit provenir des données ..__ Peut-être devriez-vous ajouter un champ à votre table (par exemple, un compteur entier) et réimporter les données.

Cependant, cela ne donnera que l'ordre de l'importation et non les données. Si vos données ne sont pas classées, vous devez savoir comment les ajouter.

EDIT: vous dites

... pour s'assurer qu'il importait tout.

Quel est le problème avec l'utilisation du nombre de lignes?

13
Tony

Toutes les réponses ici sont meilleures, mais juste au cas où ........ Il y a moyen d'obtenir 10 derniers enregistrements ajoutés. (tu c'est assez peu fiable :)) encorevous pouvez faire quelque chose comme

SELECT * FROM table LIMIT 10 OFFSET N-10

N - devrait correspondre au nombre total de lignes de la table (SELECT count (*) FROM table). Vous pouvez le placer dans une requête unique en utilisant des requêtes préparées, mais je ne m'y intéresserai pas.

21
Ivan

Sélectionnez dans le tableau, utilisez ORDER BYDESC pour trier dans l’ordre inverse, puis limitez vos résultats à 10.

SELECT * FROM big_table ORDER BY A DESC LIMIT 10
15
Steven Scott

Vous pouvez utiliser l'option "ORDER BY DESC", puis la remettre dans l'ordre d'origine:

(SELECT * FROM nom_table ORDER BY id DESC LIMIT 10) ORDER BY id;

10
Dustin Soodak
SELECT * FROM big_table ORDER BY A DESC LIMIT 10
5
user3305213

Si vous effectuez une opération LOAD DATA INFILE 'myfile.csv', le moyen le plus simple de voir si toutes les lignes sont entrées est de vérifier show warnings(); Si vous chargez les données dans une table vide ou temporaire, vous pouvez également vérifier le nombre de lignes qu'il contient après l'insertion. .

4
dnagirl

l'exécution d'une requête de nombre (*) sur de grandes données coûte cher. Je pense en utilisant "SELECT * FROM table ORDER BY id DESC LIMIT n" où n est votre nombre de lignes par page est meilleure et plus légère

2
Sameeh Harfoush

Une approche low-tech: faire cela avec SQL pourrait être exagéré. Selon votre question, il vous suffit de procéder à une vérification ponctuelle de l'importation.

Pourquoi ne pas simplement faire: SELECT * FROM ImportTable

puis faites défiler vers le bas de la grille des résultats et vérifiez visuellement les "dernières" lignes.

1
Paul Sasik

Si vous savez combien de lignes vous devez vous attendre, je créerais une table temporaire distincte dans la base de données de la structure attendue, vous l'ajouteriez à cela, puis vérifieriez le nombre ... Une fois que vous en êtes capable, vous pouvez manipuler ces données avant de les ajouter. dans votre table de production finale.

0
DRapp

vous pouvez avec le code sélectionner 10 lignes de la fin du tableau . sélectionner * de (SELECT * FROM ordre de table1 par id desc LIMIT 10) comme ordre de table2 par id

0
mahdiaction