Sql 在Oracle中按连接名称排序?
我有一个名为USERS的表,我从中获取员工的名字和姓氏,并将其作为一个名字打印出来。如何在此数据上正确使用ORDER BY 以下是我所拥有的: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
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作为“员工姓名”,更像这一个。使索引有价值的机会。