Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/297.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql 在Oracle中按连接名称排序?_Sql_Oracle_Sql Order By_Concatenation - Fatal编程技术网

Sql 在Oracle中按连接名称排序?

Sql 在Oracle中按连接名称排序?,sql,oracle,sql-order-by,concatenation,Sql,Oracle,Sql Order By,Concatenation,我有一个名为USERS的表,我从中获取员工的名字和姓氏,并将其作为一个名字打印出来。如何在此数据上正确使用ORDER BY 以下是我所拥有的: SELECT l.OFFICE_NAME, (us.LAST_NAME || ' , ' || us.FIRST_NAME) AS "Employee Name" FROM LOCAL_OFFICE l, USERS us WHERE l.LOCAL_OFFICE_ID = us.LOCAL_OFFICE_ID ORDER BY l.OFFICE_NA

我有一个名为USERS的表,我从中获取员工的名字和姓氏,并将其作为一个名字打印出来。如何在此数据上正确使用ORDER BY

以下是我所拥有的:

SELECT l.OFFICE_NAME, (us.LAST_NAME || ' , ' || us.FIRST_NAME) AS "Employee Name"
FROM LOCAL_OFFICE l, USERS us
WHERE l.LOCAL_OFFICE_ID = us.LOCAL_OFFICE_ID
ORDER BY  l.OFFICE_NAME  --what do I place here?--
我将通过加入而不是更昂贵的从,但如何按名称字母顺序进行订购?

您可以说:

ORDER BY office_name, "Employee Name"

这在11G中有效,但在旧版本的Oracle中可能不行。

因为您的连接并没有真正添加任何新内容,为什么不只是

ORDER BY l.OFFICE_NAME, (us.LAST_NAME || ' , ' || us.FIRST_NAME) 
ORDER BY l.OFFICE_NAME, us.LAST_NAME, us.FIRST_NAME
编辑:如果在
用户.姓氏
和/或
用户.姓氏
上有索引,这将比按串联结果排序快

您可以使用:

以1,2的顺序排列


这不是一个非常好的实践,但它很有效。

FROM并不比JOIN“更贵”。JOIN现在更受欢迎,因为它更容易阅读,尤其是在大型SQL语句中。@Tony Andrews啊。我在自学,从某个地方读到FROM本质上是两个表的笛卡尔积,我知道这可能非常昂贵。不,只有在WHERE子句中没有提供连接条件时才是笛卡尔积。我试过了,但我得到了一个错误:[错误]执行(11:10):ORA-00904:“员工姓名”:无效标识噢,我在其他地方发现了导致该错误的错误。现在可以用了,谢谢!这是可行的,我不知道是否需要一些东西,因为我引用concat作为“员工姓名”,更像这一个。使索引有价值的机会。