UNION
işleci, birleştirme işleminin bir parçası olarak (anahtar sütun (lar) da IIRC) örtülü bir sıralama gerçekleştirir. Sonucun sıralama diğer istiyorsanız
, sen unioned seçime bir ORDER BY
uygulamak zorunda. Senin durumunda
, düzgün şekilde sendikaya sipariş edebilirsiniz, böylece ilk seçimi ve ikinci ayırt etmenin bir yolunu gerekir. (Denenmemiş) gibi bir şey: Bu yaklaşım ile
(SELECT table1.*, 0 AS TMP_ORDER FROM table1 ORDER BY fieldA ASC LIMIT 3)
UNION
(SELECT table1.*, 1 AS TMP_ORDER FROM table1)
ORDER BY TMP_ORDER ASC,
CASE WHEN TMP_ORDER = 0 THEN fieldA ELSE 0 END ASC,
CASE WHEN TMP_ORDER = 1 THEN fieldB ELSE 0 END DESC
sorun UNION
ilk sorgusu (sütunlar tamamen uyuşmuyor beri) bir parçası olarak seçilen üç satırlar için çiftleri gerekecek olmasıdır.
Eğer iki
SELECT
statments yerine kullanamaz emin misin? Sabit bir sonucu olarak, ikinci
SELECT
ilan edebilir
bakınız [UNION sözdizimi] (http://dev.mysql.com/doc/refman/5.0/en/union.html) . 'SELECT ifadeleri için SİPARİŞ'in kullanılması, siparişle ilgili hiçbir şey ifade etmemektedir'. Ayrıca bkz. [Bu SO gönderisi] (http://stackoverflow.com/questions/3163503/sorting-union-queries-in-mysql/3163526#3163526). – Mike
Vay, işe yaradı ... ama nasıl çalışır? mmm .. biraz kafam karıştı ..! – stighy