Random und Limit
am 15.08.2005 12:22:44 von Albert NaumannHallo,
wie muss eine Abfrage geschrieben werden wenn ich mit
LIMIT 20 Zeilen lesen möchte und aus diesen dann 2 mit RANDOM
anzeigen?
Viele Grüße
Albert
Hallo,
wie muss eine Abfrage geschrieben werden wenn ich mit
LIMIT 20 Zeilen lesen möchte und aus diesen dann 2 mit RANDOM
anzeigen?
Viele Grüße
Albert
Albert Naumann wrote:
> Hallo,
>
> wie muss eine Abfrage geschrieben werden wenn ich mit
> LIMIT 20 Zeilen lesen möchte und aus diesen dann 2 mit RANDOM
> anzeigen?
>
Warum 20 Lesen und dann doch nur 2 davon ausgeben?
SELECT ... WHERE ... ORDER BY rand() LIMIT 2
Ansonsten innerhalb PHP lösen. 20 lesen und 2 zufällig auswählen.
Bis denn dann
Stefan
> Viele Grüße
> Albert
>
>
> Warum 20 Lesen und dann doch nur 2 davon ausgeben?
> SELECT ... WHERE ... ORDER BY rand() LIMIT 2
weil erst mit WHERE 20 Zeilen ausgewählt werden sollen und
auf diese der RANDOM angewendet werden soll.
Albert Naumann wrote:
> Hallo,
>
> wie muss eine Abfrage geschrieben werden wenn ich mit
> LIMIT 20 Zeilen lesen möchte und aus diesen dann 2 mit RANDOM
> anzeigen?
SELECT * FROM
(SELECT * FROM foo LIMIT 20) AS a
ORDER BY rand() LIMIT 2;
Sollte funktionieren.
Grüße, Hakan
--
Hakan Kuecuekyilmaz
> SELECT * FROM
> (SELECT * FROM foo LIMIT 20) AS a
> ORDER BY rand() LIMIT 2;
>
> Sollte funktionieren.
sorry, kann nicht ganz folgen ...
hast du mir ein funktionsfähiges Beispiel?
Gruss Albert
Albert Naumann wrote:
>>SELECT * FROM
>> (SELECT * FROM foo LIMIT 20) AS a
>>ORDER BY rand() LIMIT 2;
>>
>>Sollte funktionieren.
>
>
> sorry, kann nicht ganz folgen ...
> hast du mir ein funktionsfähiges Beispiel?
>
Es ist funktionisfähig. Allerdings nur, wenn dein mySQL subqueries unterstützt.
Bis denn dann
Stefan
> Gruss Albert
>
>
Albert Naumann wrote:
>>SELECT * FROM
>> (SELECT * FROM foo LIMIT 20) AS a
>>ORDER BY rand() LIMIT 2;
>>
>>Sollte funktionieren.
>
>
> sorry, kann nicht ganz folgen ...
> hast du mir ein funktionsfähiges Beispiel?
Hallo Albert,
das Statement oben funktioniert ab MySQL 4.1. Hier ein vollständiges
Beispiel:
CREATE TABLE foo (a int);
INSERT INTO foo values (1);
INSERT INTO foo values (2);
INSERT INTO foo values (3);
INSERT INTO foo values (4);
INSERT INTO foo values (5);
INSERT INTO foo values (6);
INSERT INTO foo values (7);
INSERT INTO foo values (8);
INSERT INTO foo values (9);
INSERT INTO foo values (10);
INSERT INTO foo values (11);
INSERT INTO foo values (12);
INSERT INTO foo values (13);
INSERT INTO foo values (14);
INSERT INTO foo values (15);
INSERT INTO foo values (16);
INSERT INTO foo values (17);
INSERT INTO foo values (18);
INSERT INTO foo values (19);
INSERT INTO foo values (20);
INSERT INTO foo values (21);
INSERT INTO foo values (22);
INSERT INTO foo values (23);
SELECT * FROM
(SELECT * FROM foo LIMIT 20) AS a
ORDER BY rand() LIMIT 2;
Ausgabe bei mir:
5.0.12-beta-debug-log
[11:13] root@test>SELECT * FROM
-> (SELECT * FROM foo LIMIT 20) AS a
-> ORDER BY rand() LIMIT 2;
+------+
| a |
+------+
| 5 |
| 13 |
+------+
Grüße, Hakan
--
Hakan Kuecuekyilmaz