Bir SQL değerleri sırası ile() sipariş fıkra
Eğer uzakta (muhtemelen daha iyi bir yolu) bir değerler düzeni tarafından sipariş olup olmadığını merak ediyorum() yan tümcesi.
Sorun 2 sorgular, Kimlikleri ve tüm bilgileri alır, ikinci alır. İlk ve ikinci ile sipariş etmek istiyorum hangi Kimlikleri sırasını oluşturur. Kimlikleri bir konur() doğru sırayla fıkra.
(Çok basitleştirilmiş) gibi bir şey olur:
SELECT id FROM table1 WHERE ... ORDER BY display_order, name
SELECT name, description, ... WHERE id IN ([id's from first])
Sorun ikinci sorgu Kimliği içine sırayla aynı sonuçlar döndürmüyor yani() yan tümcesi.
Bulduğum tek çözüm sonra ikinci sorgu içine katılmış olan otomatik artan bir alan ile temp bir tabloya Kimlikleri her şeyi koymak.
Daha iyi bir seçenek var mı?
Not:İlk sorgu "kullanıcı" ve ikinci bir arka plan işlemi, 1 sorgu alt sorgu kullanarak 2 birleştirmek için bir yolu yoktur. tarafından işletilen gibi
MySQL kullanıyorum, ama diğer DBs için de var ne dedi için yararlı olabileceğini düşünüyorum.
CEVAP
Kullanımı MySQL FIELD() fonksiyon:
SELECT name, description, ...
FROM ...
WHERE id IN([ids, any order])
ORDER BY FIELD(id, [ids in order])
() ALAN ilk parametre eşit olan ilk parametre dizini (ilk parametre kendisi dışında) geri dönecek.
FIELD('a', 'a', 'b', 'c')
1 döndürür
FIELD('a', 'c', 'b', 'a')
geri 3
Bu if içine kimlikleri yapıştırırsanız tam olarak ne istediğinizi yapar() madde ve ALAN() aynı sırada işlevi.
Fıkra DEĞİL ve NULL değerleri...
DeÄŸerleri deÄŸiÅŸtirme emri olmadan bir ...
değerleri, türleri, çeşitleri,... sons...
SipariÅŸ LinkedHashMap bir nesne anahta...
Birden fazla "SERÄ°" sipariÅŸ...