Ich möchte ein Paging-Skript im Grunde funktioniert, aber die Situation ist ein bisschen komplex. Ich muss Daten aus der Vereinigung von zwei SQL-Abfragen auswählen. Siehe die Abfrage unten. Ich habe ein Tischbuch und einen Tisch Buchbesuch. Was ich möchte, ist hier, um alle Bücher für eine bestimmte Kategorie in ihrer Beliebtheit anzuzeigen. Ich bekomme Daten für alle Bücher mit mindestens einem Besuch, indem ich Tischbuch und Buchbesuch beiarbeite. und dann verbinde es mit allen Büchern ohne Besuch. Alles funktioniert gut, aber wenn ich versuche, Paging zu machen, muss ich es begrenzen wie (0,10) (10,10) (20,10) (30,10), richtig? Wenn ich 9 Bücher in einem Buchbesuch für diese Kategorie und 3761 Bücher ohne Besuch für diese Kategorie (insgesamt 3770 Bücher) habe, sollte es 377 Seiten, 10 Bücher auf jeder Seite auflisten. aber es zeigt keine Daten für einige Seiten, weil es versucht, Bücher mit Limit 3760,10 und somit keine Datensätze für die zweite Abfrage in Union zu zeigen. Vielleicht kann ich die Situation hier nicht klären, aber wenn Sie ein wenig über die Situation nachdenken, werden Sie meinen Standpunkt verstehen.Mysql Union Limit Problem
SELECT * FROM (
SELECT * FROM (
SELECT viewcount, b.isbn, booktitle, stock_status, price, description FROM book AS b
INNER JOIN bookvisit AS bv ON b.isbn = bv.isbn WHERE b.price <> 0 AND hcategoryid = '25'
ORDER BY viewcount DESC
LIMIT 10, 10
) AS t1
UNION
SELECT * FROM
(
SELECT viewcount, b.isbn, booktitle, stock_status, price, description FROM book AS b
LEFT JOIN bookvisit AS bv ON b.isbn = bv.isbn WHERE b.price <> 0 AND hcategoryid = '25'
AND viewcount IS NULL
ORDER BY viewcount DESC
LIMIT 10, 10
) AS t2
)
AS qry
ORDER BY viewcount DESC
LIMIT 10
nein, es 10.000 Ergebnisse zeigen, kann so muss Limit verwenden –
Youy zeigen alle Buch mit Besuche von allen Büchern ohne Besuch in einer bestimmten Kategorie gefolgt, oder? Sie brauchen also LIMIT in den Unterabfragen der UNION nicht. Sie müssen nur das Ergebnis entsprechend der Seitennummerierung LIMITIEREN. Ihre Abfrage sollte in etwa so aussehen (SELECT all_books_with_ visits) UNION (SELECT all_books_with_no_visit) LIMIT 3760,10. Das letzte LIMIT sollte das einzige in Ihrer Abfrage sein. Im Moment haben Sie 2 zusätzliche LIMITs in jeder Unterabfrage, die das Problem verursachen. –
Ich habe das gleiche Problem mit Seitenumbruch durch MySQL. @Yasen Zhelev deine Lösung funktioniert, aber als g.b. bereits gesagt, wenn die Unterabfragen 10.000 Ergebnisse zurückgeben, würde dies nicht die Leistung zu begrenzen, nur nach der Vereinigung zu begrenzen? – mvdb