Önde gelen öğesi geçirdikten sonra diğer öğeleri alfabetik ile takip Display

3 Cevap php

Tüm diğerleri sonra alfabetik benim öğeleri geri kalanını görüntülemek için önce ilk öğeyi görüntülemek için bir MySQL veya PHP yöntem var mı?

SELECT client_name FROM clients ORDER BY client_name ASC

Bana aşağıdaki listede verir:

  1. Şilin
  2. Harold
  3. Kumlu
  4. Timmy

Böyle sırayla onları görüntülemek için bir yol arıyorum hariç.

  1. Harold
  2. Şilin
  3. Kumlu
  4. Timmy

ya da bunun gibi hangi birine bağlı olarak ilk ihtiyacım var ...

  1. Kumlu
  2. Şilin
  3. Harold
  4. Timmy

3 Cevap

Böyle bir şey kullanabilirsiniz:

SELECT client_name FROM clients ORDER BY client_name != 'Harold', client_name

Client_name! = 'Harold' bölümü yani 'Harold' ilk olacak, 'Harold için' sahte ve diğer her satır için geçerlidir. Bundan sonra, bu CLIENT_NAME tarafından doğru satırları sıralamak.

Eğer MySQL bunu yapmak istiyorsa, bir sendika kullanabilirsiniz:

SELECT client_name FROM clients WHERE client_name = 'Harold'
UNION SELECT client_name FROM clients WHERE client_name != 'Harold' ORDER BY client_name ASC

Ben oldukça büyük olduğunu, ancak Lukáš Lalinský önerisini kullanmak istiyorum.

Ya da, sadece PHP süzüp:

$result = mysql_query("SELECT client_name FROM clients ORDER BY client_name ASC");
$head = array();
$tail = array();

while($row = mysql_fetch_assoc($result)) {
    if($row['client_name'] == 'Harold') {
        $head[] = $row;
    } else {
        $tail[] = $row;
    }
}

$result = array_merge($head, $tail);
SELECT client_name FROM clients ORDER BY client_name ASC LIMIT 1
you will get $clientname
then:
SELECT client_name FROM clients ORDER BY client_name ASC LIMIT 1,99999

OR:

SELECT client_name FROM clients WHERE client_name<>$clientname ORDER BY client_name ASC