SQL where在具有order by的SQL子查询中

SQL where在具有order by的SQL子查询中,sql,sql-server,Sql,Sql Server,这是我的问题 SELECT * FROM Place WHERE Place.Id IN ( SELECT TOP 10 PlaceId from #ResultPlaceList order by CPlaceId desc) 我的结果是按Place.ID排序的,但我希望得到一个具有排序CPlaceId的结果。类似于这样的内容 SELECT * FROM PLACE WHERE PLACE.ID IN ( SELECT PLACEID FROM (

这是我的问题

SELECT * FROM Place WHERE Place.Id IN (
    SELECT TOP 10 PlaceId from #ResultPlaceList order by CPlaceId desc) 

我的结果是按Place.ID排序的,但我希望得到一个具有排序CPlaceId的结果。

类似于这样的内容

SELECT * FROM PLACE WHERE PLACE.ID IN (
    SELECT PLACEID
    FROM (
        SELECT PLACEID
            , ROW_NUMBER() OVER (ORDER BY CPLACEID DESC) RNUM
        FROM #RESULTPLACELIST
    ) TMP
    WHERE RNUM <= 10
)

像这样的

SELECT * FROM PLACE WHERE PLACE.ID IN (
    SELECT PLACEID
    FROM (
        SELECT PLACEID
            , ROW_NUMBER() OVER (ORDER BY CPLACEID DESC) RNUM
        FROM #RESULTPLACELIST
    ) TMP
    WHERE RNUM <= 10
)
您必须进行连接才能完成此操作。它看起来像这样:

SELECT TOP 10 Place.* 
FROM Place
JOIN #ResultPlaceList ON #ResultPlaceList.PlaceId = Place.Id
ORDER BY CPlaceId DESC
您必须进行连接才能完成此操作。它看起来像这样:

SELECT TOP 10 Place.* 
FROM Place
JOIN #ResultPlaceList ON #ResultPlaceList.PlaceId = Place.Id
ORDER BY CPlaceId DESC

您可以使用联接来使用cPlaceId列进行排序:

select p.*
from Place p
join (
    select top 10 PlaceId,
        CPlaceId
    from #ResultPlaceList
    order by CPlaceId desc
    ) r on p.Id = r.PlaceId
order by r.CPlaceId;

您可以使用联接来使用cPlaceId列进行排序:

select p.*
from Place p
join (
    select top 10 PlaceId,
        CPlaceId
    from #ResultPlaceList
    order by CPlaceId desc
    ) r on p.Id = r.PlaceId
order by r.CPlaceId;
'选择C.ID 来自客户详细信息C C.ID=U.ID上的左连接用户信息U 按U.ID订购'

你能这样修改你的查询吗?选择C.ID 来自客户详细信息C C.ID=U.ID上的左连接用户信息U 按U.ID订购'


您可以这样修改您的查询吗

对不起。您是否收到任何错误或未收到预期的输出?这不是我所期望的,无论如何,感谢您的关注抱歉。您是否收到任何错误或未收到预期的输出?这不是我所期望的,无论如何,感谢您的关注您的位置表是否有CPlaceId列?您的位置表是否有CPlaceId列?