在不在投影中的字段上按sql排序

时间:2012-05-28 15:17:41

标签: sql database

是否可以在不在投影本身的字段上排序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 , 7012353 , 44662785 
)
) 
AND this_.Published = TRUE
AND this_.Published = TRUE
ORDER BY
this_.Priority ASC,
productcul2_._ActualTitle ASC,
this_.Priority ASC LIMIT 25;

1 个答案:

答案 0 :(得分:0)

不知道是否有更好的解决方案,但是外部查询排除了您不感兴趣的字段的嵌套选择怎么样?

所以,在“随机”表格中就是这样的东西

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

显然,如果有一个“语言直接”的解决方案会更好,因为这样,你必须做两次投影,其中一种是没用的