2014-01-29 35 views
0

我想选择3个表中的某些列。我在ORDER BY NULLS FIRST有问题。它已经2小时了,它还在加载。我认为我的脚本是错误的或我需要添加的东西。这是我的脚本,它在运行..ORDER BY NULLS FIRST

SELECT (CASE WHEN a.column1 IS NULL 
      THEN 'ACTIVE' 
      ELSE 'INACTIVE' 
      END) as STATUS_DEF, <<some columns>>, 

     (CASE WHEN b.column1 IS NULL 
      THEN 'Active' 
      ELSE) as STATUS_fnd_user, <<some columns>>, 

         c.column1||','||c.column2||','||c.column3 

FROM table1 a, table2 b, table3 c 

然后我想活动首先,这就是为什么我用ORDER BY NULLS FIRST进行排序。我试过这个..

ORDER BY a.column1, b.column1 NULLS FIRST; 

还有其他想法吗?

+2

既然你正在改变NULL列状态为主动,你为什么不能尝试通过STATUS_DEF,STATUS_fnd_user在您的查询和检查顺序... – arunb2w

+6

你没有加入三个表,因此在三者之间创建笛卡尔积。结果行数将是((table1中的行)*(table2中的行)*(table3中的行)) - 您可以自己计算。这就是为什么使用**显式**连接('从表1连接表2 ...连接表3 ...')更好 - 你不能忘记添加连接条件。 –

+1

@a_horse_with_no_name我使用**显式**连接!谢谢! –

回答

2

由于a_horse_with_no_name :)

活动......

FROM table1 a JOIN table2 b ON a.column1 IS NULL JOIN table3 c ON b.column1 IS NULL 

无效...

FROM table1 a JOIN table2 b ON a.column1 = a.column1 JOIN table3 c ON b.column1 = b.column1