Random und Limit

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 [ Mo, 15 August 2005 12:22 ] [ ID #922751 ]

Re: Random und Limit

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
>
>
Stefan Rybacki [ Mo, 15 August 2005 13:27 ] [ ID #922752 ]

Re: Random und Limit

> 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 [ Mo, 15 August 2005 13:49 ] [ ID #922753 ]

Re: Random und Limit

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
Hakan Kuecuekyilmaz [ Mo, 15 August 2005 17:43 ] [ ID #922756 ]

Re: Random und Limit

> 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 [ Mi, 17 August 2005 15:30 ] [ ID #926493 ]

Re: Random und Limit

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
>
>
Stefan Rybacki [ Mi, 17 August 2005 15:32 ] [ ID #926494 ]

Re: Random und Limit

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 [at] test>SELECT * FROM
-> (SELECT * FROM foo LIMIT 20) AS a
-> ORDER BY rand() LIMIT 2;
+------+
| a |
+------+
| 5 |
| 13 |
+------+

Grüße, Hakan
--
Hakan Kuecuekyilmaz
Hakan Kuecuekyilmaz [ Mi, 24 August 2005 11:15 ] [ ID #936750 ]
PHP » de.comp.lang.php.datenbanken » Random und Limit

Vorheriges Thema: Suche Datenbank-Userinterface (bzw. Elemente)
Nächstes Thema: MySQL - Bitweise speichern