SQL select .. where id=1 or id=5 or id=19

Senator42

Level-1
Beiträge
927
Reaktionspunkte
80
Zuviel Werbung?
-> Hier kostenlos registrieren
hallo Datenbänker,

gibt es eine bessere variante für MySQL wenn ich nach mehreren suche statt:

select name from tbl where id=1 or id=5 or id=19 id=21 or id=22 or id=42;

?
(das where bleibt nicht konstannt! die zahlen hab ich in einem PHP array und sind verschieden in der anzahl)
 
Zuletzt bearbeitet:
Du könntest deine Vergleichswerte für id in eine weitere Tabelle schreiben.
Dann läßt sich bestimmt was mit joins machen ... Bin aber auch kein DB-Experte.

Gruß und guten Rutsch
Dieter
 
Unterstützt MySQL where id in (1,5,19, ...)?
Ja, das geht,
ABER

das geht ( mit count(*) und GROUP BY Id )
SELECT Id, count(*) FROM tbl WHERE Id IN(17,1) GROUP BY Id ;

das geht NICHT ( mit count(*) und ORDER BY FIELD(Id,17,1) und GROUP BY Id )
SELECT Id, count(*) FROM tbl WHERE Id IN(17,1) ORDER BY FIELD(Id,17,1) GROUP BY Id ;

das geht ( mit count(*) und ORDER BY FIELD(Id,17,1) -- )
SELECT Id, count(*) FROM tbl WHERE Id IN(17,1) ORDER BY FIELD(Id,17,1) ;
[ definierte sortierung: ORDER BY FIELD(Id,17,1) ]
[ bzw. sortierung genau in dieser Folge: ORDER BY FIELD(Id,17,16,1,7,4,3,5,6) ]

ALSO
ORDER BY FIELD(Id,17,1) __ und __ GROUP BY Id __ gleichzeitig geht nicht !
 
Hallo,

probiers mal mit einer Unterabfrage:

Code:
SELECT 
  Id, Menge
FROM 
  (
  SELECT 
    Id, count(*) AS Menge
  FROM 
    tbl 
  WHERE 
    Id IN(17,1) 
  GROUP BY 
    Id
  )
ORDER BY 
  FIELD(Id,17,1)
 
Zurück
Oben