2010-02-11 9 views
4

Donc je veux joindre deux tables ensemble, mais pour chaque ligne dans le premier tableau, je veux seulement le joindre aux 8 premières lignes correspondantes dans l'autre table, ordonné par l'une des colonnes de ce tableau. Toute syntaxe astucieuse que je peux utiliser, ou dois-je me tromper avec les sous-requêtes?Limite le nombre de lignes à rejoindre, dans mysql

Répondre

-1

Cela peut ne pas être la meilleure solution, mais dites que vous vous joignez à ID, vous pouvez utiliser une sous-requête dans votre clause where.

select from table1 where id in (select top 8 id from table2 order by column1 desc) 
+3

La clause TOP est uniquement SQL Server. –

2

Jetez un oeil à

How to select the first/least/max row per group in SQL

Section Sélectionnez les lignes N premières de chaque groupe

Ce problème est un peu plus difficile à résoudre . Trouver une seule ligne de chaque groupe est facile avec les fonctions de SQL (MIN(), MAX() et ainsi de suite). La recherche des premiers plusieurs de chaque groupe n'est pas possible avec cette méthode car les fonctions agrégées renvoient une seule valeur. Pourtant, c'est possible de le faire.

Questions connexes