使用concat进行SQL排序

使用concat进行SQL排序,sql,sql-order-by,concat,Sql,Sql Order By,Concat,我连接了两个字段,只想按第二个字段(p.organizationname)排序。可能吗 我正在显示此字段,因此我需要一个解决方案,其中不包括我必须单独选择字段 以下是我到目前为止的情况: SELECT distinct Concat(Concat(f.REFERENCEFILE, ','),p.ORGANIZATIONNAME) FROM PEOPLE p,FOLDER f,FOLDERPEOPLE fp,folderinfo fi... Order By concat(Concat(f.REF

我连接了两个字段,只想按第二个字段(p.organizationname)排序。可能吗

我正在显示此字段,因此我需要一个解决方案,其中不包括我必须单独选择字段

以下是我到目前为止的情况:

SELECT distinct Concat(Concat(f.REFERENCEFILE, ','),p.ORGANIZATIONNAME)
FROM PEOPLE p,FOLDER f,FOLDERPEOPLE fp,folderinfo fi...
Order By concat(Concat(f.REFERENCEFILE, ','),p.ORGANIZATIONNAME)

使用
分组依据
排序依据
作为聚合,而不是
不同的

SELECT Concat(Concat(f.REFERENCEFILE, ','),p.ORGANIZATIONNAME)
FROM PEOPLE p,FOLDER f,FOLDERPEOPLE fp,folderinfo fi...
GROUP BY Concat(Concat(f.REFERENCEFILE, ','),p.ORGANIZATIONNAME)
Order By MAX(p.ORGANIZATIONNAME)
可以用一个例子来说明这个问题:

ID Col1
1  Dog
1  Cat
2  Horse
不同的身份证?简单:
1,2

按Col1排序的不同ID。。。等待SQL应该使用
Col1
的哪个值?SQL感到困惑和愤怒


由于您使用的是两个字段的串联,并且希望按其中一个字段进行排序,您还可以将排序字段包括在
DISTINCT
子查询中,然后
ORDER BY
排序字段,而不将其包括在
SELECT
列表中。

使用
groupby
ORDER BY
作为聚合,而不是
DISTINCT

SELECT Concat(Concat(f.REFERENCEFILE, ','),p.ORGANIZATIONNAME)
FROM PEOPLE p,FOLDER f,FOLDERPEOPLE fp,folderinfo fi...
GROUP BY Concat(Concat(f.REFERENCEFILE, ','),p.ORGANIZATIONNAME)
Order By MAX(p.ORGANIZATIONNAME)
可以用一个例子来说明这个问题:

ID Col1
1  Dog
1  Cat
2  Horse
不同的身份证?简单:
1,2

按Col1排序的不同ID。。。等待SQL应该使用
Col1
的哪个值?SQL感到困惑和愤怒


由于您使用的是两个字段的串联,并且希望按其中一个字段进行排序,您还可以在
DISTINCT
子查询中包含排序字段,然后在
ORDER BY
中包含排序字段,而不将其包含在
SELECT
列表中。

因为您有一个DISTINCT,所以应该在SELECT中指定您的ORDER BY子句,在您的案例中,您可以使用子查询获得相同的结果,因为添加P.ORGANIZATIONNAME时,不同的值将是相同的

SELECT col 
  FROM( SELECT distinct Concat(Concat(f.REFERENCEFILE, ','),p.ORGANIZATIONNAME) a,
               p.ORGANIZATIONNAME b
          FROM PEOPLE p,FOLDER f,FOLDERPEOPLE fp,folderinfo fi... ) t
   order by b

由于您有一个不同的ORDER BY子句,因此应该在SELECT中指定该子句,您可以使用子查询在您的案例中实现相同的结果,因为添加p.ORGANIZATIONNAME时,不同的值将是相同的

SELECT col 
  FROM( SELECT distinct Concat(Concat(f.REFERENCEFILE, ','),p.ORGANIZATIONNAME) a,
               p.ORGANIZATIONNAME b
          FROM PEOPLE p,FOLDER f,FOLDERPEOPLE fp,folderinfo fi... ) t
   order by b

你可以按p.ORGANIZATIONNAME@a1ex07排序,但在使用
SELECT DISTINCT
时,我尝试得到“Not a selected expression”错误是的,我的错-我没有找到问题中的
DISTINCT
。。。但是我不能删除我的评论。你可以只按p.ORGANIZATIONNAME@a1ex07排序,而不是在使用
SELECT DISTINCT
时,当我尝试获取“Not a selected expression”错误时是的,我的错-我错过了问题中的
DISTINCT
。。。但是我不能删除我的评论。