Sql server 尝试在左联接查询上使用ORDER BY

Sql server 尝试在左联接查询上使用ORDER BY,sql-server,group-by,left-join,sql-order-by,Sql Server,Group By,Left Join,Sql Order By,我试图使用左连接和concat两个列名,以便它们一起显示在下拉列表中。这是我目前的疑问 SELECT DISTINCT CONCAT(CAST(Index.MR_ID AS INT),' - ', Master.MR_Name) AS MR_ID FROM Index LEFT JOIN Master ON Master.MR_ID=Index.MR_ID 我想按索引表中的MR_ID对其进行排序,但每当我尝试向查询中添加order by时,它都不会对我起作用。有人能帮帮我吗?我想你应该在这之后

我试图使用左连接和concat两个列名,以便它们一起显示在下拉列表中。这是我目前的疑问

SELECT DISTINCT CONCAT(CAST(Index.MR_ID AS INT),' - ', Master.MR_Name) AS MR_ID
FROM Index
LEFT JOIN Master
ON Master.MR_ID=Index.MR_ID

我想按索引表中的MR_ID对其进行排序,但每当我尝试向查询中添加order by时,它都不会对我起作用。有人能帮帮我吗?

我想你应该在这之后

SELECT DISTINCT CONCAT(CAST(Index.MR_ID AS INT),' - ', IsNull(Master.MR_Name, '')) AS MR_ID
FROM SIndex
LEFT JOIN Master ON Master.MR_ID=SIndex.MR_ID
Order by CONCAT(CAST(Index.MR_ID AS INT),' - ', IsNull(Master.MR_Name, '')) 

我想你应该在这之后

SELECT DISTINCT CONCAT(CAST(Index.MR_ID AS INT),' - ', IsNull(Master.MR_Name, '')) AS MR_ID
FROM SIndex
LEFT JOIN Master ON Master.MR_ID=SIndex.MR_ID
Order by CONCAT(CAST(Index.MR_ID AS INT),' - ', IsNull(Master.MR_Name, '')) 

肯定先生比我先到。由于您使用的是左联接,所以我还准备使用null

select distinct concat(cast(index.mr_id as int),' - ', isnull(master.mr_name,'') as mr_id
  from sindex
    left join master on master.mr_id=index.mr_id
  order by concat(cast(index.mr_id as int),' - ', isnull(master.mr_name,'')

肯定先生比我先到。由于您使用的是左联接,所以我还准备使用null

select distinct concat(cast(index.mr_id as int),' - ', isnull(master.mr_name,'') as mr_id
  from sindex
    left join master on master.mr_id=index.mr_id
  order by concat(cast(index.mr_id as int),' - ', isnull(master.mr_name,'')
以上是如果你想按你得到的最后一列排序的话

如果要在索引或主表中按MR_ID排序,则不可能,因为您使用的是DISTINCT运算符,这意味着它不由最终查询确定。在这种情况下,您将需要以下

WITH cte AS (
SELECT DISTINCT CONCAT(CAST(Index.MR_ID AS INT),' - ', Master.MR_Name) AS MR_ID
    , Index.MR_ID AS sort_column
FROM [Index]
LEFT JOIN Master
ON Master.MR_ID=Index.MR_ID
)
SELECT MR_ID
FROM
    cte
ORDER BY
    sort_column;
以上是如果你想按你得到的最后一列排序的话

如果要在索引或主表中按MR_ID排序,则不可能,因为您使用的是DISTINCT运算符,这意味着它不由最终查询确定。在这种情况下,您将需要以下

WITH cte AS (
SELECT DISTINCT CONCAT(CAST(Index.MR_ID AS INT),' - ', Master.MR_Name) AS MR_ID
    , Index.MR_ID AS sort_column
FROM [Index]
LEFT JOIN Master
ON Master.MR_ID=Index.MR_ID
)
SELECT MR_ID
FROM
    cte
ORDER BY
    sort_column;

我们可以……如果您显示您试图使用的
ORDER BY
子句,首先您有
索引。MR_Id
在上述SQL中的多个位置,但是
Index
不是From子句中提到的表。它应该是
SINdex
?或者应该是From子句中的
Index
?这是您的Order By中的问题吗?我们可以……如果您显示您试图使用的
Order By
子句,首先您有
Index。MR_Id
在上面的SQL中的几个地方,但是
Index
不是From子句中提到的表。它应该是
SINdex
?或者应该是From子句中的
Index
?这就是你订单上的问题吗?这就是我要找的!非常感谢。这就是我要找的!非常感谢。