2009-07-03 11 views
9

belirli değerleri Sıralama:(basitleştirilmiş) aşağıdaki verilerle ben MySQL tablo var üst

INSERT INTO `stores` (`storeId`, `name`, `country`) VALUES 
(1, 'Foo', 'us'), 
(2, 'Bar', 'jp'), 
(3, 'Baz', 'us'), 
(4, 'Foo2', 'se'), 
(5, 'Baz2', 'jp'), 
(6, 'Bar3', 'jp'); 

Şimdi, müşterilerin ülke ile başlayan mağazaların bir sayfalandırılmış listesini almak isterler.

Örneğin, bir Amerikan müşteri aşağıdaki listeye bakın olacaktır:

Foo 
Baz 
Bar 
Foo2 
Baz2 
Bar3 

(bir Amerikan müşteri ve sayfa boyutu 3 ile örnek) Şu anda kullanıyorum naif çözüm:

(SELECT * FROM stores WHERE country = "us") UNION (SELECT * FROM stores WHERE country != "us") LIMIT 0,3 

Bunu yapmanın daha iyi yolları var mı? SİPARİŞ TARAFINDAN KULLANILABİLİR VE ÜZERİNDE BELİRTİLECEĞİNİ SÖYLEDİR?

cevap

15

bu deneyin ('CA' IN ülke SİPARİŞ

SELECT * 
FROM stores 
ORDER BY country = 'us' DESC, country ASC 
+0

Ahh, tam olarak aradığım şey bu, teşekkürler – truppo

1

Bir vaka ile, bir sayısal bir ülkenin her bir değeri bağlamak zorunda: ülkeye göre daha sonra siparişi,

select * 
from stores 
order by case when country = "us" then 1 
       else 0 
     end desc 
1

ülke kodları ve siparişlerin bir tablo oluşturun katılmak kendisine sorgunuzdaki ve kodun siparişi.

Yani görünen bir tablo olurdu görünüyor

CountryOrder 

Code Ord 
---- --- 
us 1 
jp 2 
se 3 

ve sonra kodu gibi gibi:

SELECT s.* 
FROM Stores s 
INNER JOIN CountryOrder c 
    ON c.Code = s.Country 
ORDER BY c.Ord; 
1

Nasıl satırlar ABD'ye en değer atamak IF kullanmayla ilgili.

select if(country_cd='us,'aaaUS',country_cd) sort_country_cd, country_cd from stores Order by sort_country_cd 

Bu, sort_country_cd adında bir sözde sütun verecektir. Burada "ABD" yi "aaaUS" ile eşleştirebilirsiniz. JP hala JP ile eşleştirilebilir.

Bu, ABD'yi sıralama listenizin en üstüne koyar.

SELECT * FROM stores ORDER BY country = "us" DESC, storeId 
+0

SEÇ COUNTRY_CODE, country_name EĞER (COUNTRY_CODE TARAFINDAN , 'ABD'), 0,1), country_name –

4

ilk aranan ülkeyi almak için, ve alfabetik kalan:

İlgili konular