Ben bir IN () yan tümcesinde değer sırasına göre sipariş (muhtemelen daha iyi bir yol) olup olmadığını merak ediyorum.
Sorun 2 sorguları var, biri tüm kimlikleri alır ve ikincisi tüm bilgileri alır. Birincisi, ikincisinin sipariş etmesini istediğim kimliklerin sırasını oluşturur. Kimlikler IN () yan tümcesinde doğru sırada yerleştirilir.
Yani şöyle bir şey olurdu (son derece basitleştirilmiş):
SELECT id FROM table1 WHERE ... ORDER BY display_order, name
SELECT name, description, ... WHERE id IN ([id's from first])
Sorun ikinci sorgunun sonuçları IN () yantümcesine yerleştirilenlerle aynı sırayla döndürmemesi.
Bulduğum bir çözüm, tüm kimlikleri daha sonra ikinci sorguya birleştirilen otomatik artan bir alana sahip bir geçici tabloya koymaktır.
Daha iyi bir seçenek var mı?
Not: İlk sorgu "kullanıcı tarafından" ve ikinci sorgu bir arka plan işleminde çalıştırıldığından, alt sorguları kullanarak 2'yi 1 sorgusuna birleştirmenin bir yolu yoktur.
MySQL kullanıyorum, ancak diğer DB'ler için de hangi seçeneklerin bulunduğunu belirtmenin yararlı olabileceğini düşünüyorum.
IN
veFIELD
eşit parametreleri. Bunu bir program kodunda yapmak, bu ek bilgiyi kullanarak daha hızlı olabilir. Tabii ki, sunucu performansınız varsa, bu yükü sunucu yerine istemciye koymak daha akıllıca olabilir.