2012-05-28 84 views
2

是否可以對不在投影本身的字段排序SQL查詢的結果?通過SQL在不在投影中的字段進行排序

請參閱下面的示例 - 我採用產品表的不同ID,但我希望按標題排序。我不想包含標題,因爲我正在使用NHibernate生成一個查詢,並分頁結果。然後我使用這個不同的ID結果集來加載實際結果。

SELECT 
DISTINCT this_.`ID` AS y0 
FROM 
`Product` this_ 
LEFT OUTER JOIN 
`Brand` brand3_ 
ON this_.BrandId=brand3_.ID 
INNER JOIN 
`Product_CultureInfo` productcul2_ 
ON this_.ID=productcul2_.ProductID 
AND (
(
(
productcul2_.`Deleted` = 0 
OR productcul2_.`Deleted` IS NULL 
) 
AND (
productcul2_.`_Temporary_Flag` = 0 
OR productcul2_.`_Temporary_Flag` IS NULL 
) 
) 
) 
INNER JOIN 
`ProductCategory` aliasprodu1_ 
ON this_.ID=aliasprodu1_.ProductID 
AND (
(
(
aliasprodu1_.`Deleted` = 0 
OR aliasprodu1_.`Deleted` IS NULL 
) 
AND (
aliasprodu1_.`_Temporary_Flag` = 0 
OR aliasprodu1_.`_Temporary_Flag` IS NULL 
) 
) 
) 
WHERE 
(
this_._Temporary_Flag =FALSE 
OR this_._Temporary_Flag IS NULL 
) 
AND this_.Published = TRUE 
AND (
this_.Deleted = FALSE 
OR this_.Deleted IS NULL 
) 
AND (
this_._ComputedDeletedValue = FALSE 
OR this_._ComputedDeletedValue IS NULL 
) 
AND (
(
this_._TestItemSessionGuid IS NULL 
OR this_._TestItemSessionGuid = '' 
) 
) 
AND (
productcul2_._ActualTitle LIKE '%silver%' 
OR brand3_.Title LIKE '%silver%' 
OR aliasprodu1_.CategoryId IN (
47906817 , 47906818 , 47906819 , 47906816 , 7, 44662785 
) 
) 
AND this_.Published = TRUE 
AND this_.Published = TRUE 
ORDER BY 
this_.Priority ASC, 
productcul2_._ActualTitle ASC, 
this_.Priority ASC LIMIT 25; 
+0

我剛剛讀了一個地方,你**可以**排序的東西不在結果,只要它在表(杜)。我猜你的查詢沒有錯誤,但沒有排序? – keyser

回答

0

不知道是否有一個更好的解決方案,但如何對嵌套選擇在外部查詢exlude,你是不感興趣的領域?

所以,這樣的事情在一個「隨機」表

SELECT a,b,c from (SELECT a,b,c,d from myTable order by d) 

顯然,如果有一個「語言直接」的解決方案會更好,因爲這樣一來,你必須做的兩個投影和一個那些是沒用的

+0

這太簡單了,它很好 – keyser

相關問題