2017-07-22 2 views
4

Ich möchte die Datenbank alle Zeilen, mit Ausnahme der ersten und letzten, da ich CSS-Code für sie haben.Mysql wählen alle, aber erste und letzte Zeile

Ich versuchte dies:

SELECT * FROM db 
WHERE 
keywords LIKE '%example%' LIMIT 9999 OFFSET 1 
AND 
keywords LIKE '%example%' DESC LIMIT 9999 OFFSET 1 

Da die Zeilennummer erhöhen kann ich nicht eine genaue Zahl schreiben.

+0

Mögliche doppelte von [MySQL: So wählen Sie alle Zeilen aus einer Tabelle mit Ausnahme der letzten aus] (https://stackoverflow.com/questions/315621/mysql-how-to-select-all-rows-from-a-table-except- the-last-one) – user6069744

+3

Es wird dringend empfohlen, dass Sie dies mit PHP-Code behandeln, um 2 oder mehr Anfragen zu vermeiden – user10089632

+1

Hallo @Kakotas, wenn die unten angegebene Antwort Ihr Problem gelöst hat, könnten Sie es als akzeptiert markieren? – Cyril

Antwort

4

Es sein ist wirklich nicht r eason Ihre Suche erschweren, indem Sie versuchen, diese Werte auf SQL-Ebene abzuschneiden, könnten Sie tun:

$results = $db->query(/* regular query with all results */); 

array_pop($results); 
array_shift($results); 

// Now use $results, which now contains only the "middle" content 

Wenn Sie wirklich auf der Ebene DB möchten, können Sie verwenden:

SELECT * FROM db 
WHERE keywords LIKE '%example%' 
AND id <> (SELECT MAX(ID) FROM TABLE) 
AND id <> (SELECT MIN(ID) FROM TABLE) 
+1

Ich finde dies die vernünftigste Antwort –

0

Sie können versuchen, diese zum Beispiel:

SELECT * FROM TABLE WHERE ID != (SELECT MAX(ID) FROM TABLE) LIMIT 1,9844674507370 

Aber wie ich im Kommentar sagte: Es wird dringend empfohlen, dass Sie diesen Code mit PHP umgehen, so dass zwei oder mehr Anfragen

0

Sie zu vermeiden verwenden UNION wie als

SELECT * FROM db WHERE keywords LIKE '%example%' order by keywords ASC limit 1 UNION SELECT * FROM db WHERE keywords LIKE '%example%' order by keywords DESC limit 1; 
0

1. Platz: Einfach Sie diese Sache in pHP wie unten umgehen kann. vermeiden zwei Abfrage

$last_record =count($records)-1; 
$i=0; 
    foreach($records as $key=>$row) 
    { 
     if($i==0){ 
      //apply the css 
     } 

     if($i== $last_record){ 
      //apply the css 
     } 
    } 

query:

SELECT * FROM db WHERE keywords LIKE '%example%' 
0

Sie können es tun, ohne LIMIT UND OFFSET

SELECT * FROM table_name WHERE id != (SELECT MAX(id) FROM table_name) AND id != (SELECT MIN(id) FROM table_name) 

SELECT * FROM db 
WHERE 
keywords LIKE '%example%' 
AND 
id != (SELECT MAX(id) FROM db) 
AND 
id != (SELECT MIN(id) FROM db) 

hier id wird Ihr Auto Inkrementtaste

+0

Das hat funktioniert, danke! – Kakotas7

Verwandte Themen