在SELECT查询中使用*我们可以将列放在不同的顺序吗?

时间:2015-03-17 12:49:17

标签: sql sql-server

我已经编写了一个SQL查询

select 
    a.beam_current, 
    * 
from 
    INDUS2_MPS.dbo.main_mps_hs_analog b 
        inner join INDUS2_BDS.dbo.DCCT a on a.logtime=b.logtime 
where 
    a.logtime BETWEEN '2014-10-10 07:17:00' AND '2014-10-10 08:47:00'

当我执行此查询时,我获得了所有必需的列。现在我想改变列的顺序。 INDUS2_MPS.dbo.main_mps_hs_analog的第一列,即logtime我想成为输出中的第一列,a.beam_current是第二列,然后是INDUS2_MPS.dbo.main_mps_hs_analog的其余列。

为了实现这一点,如何操纵我的上述查询???

3 个答案:

答案 0 :(得分:1)

以上答案是正确的,只需按照您想要的顺序添加列。顺便说一句,在具有多个JOINed对象的查询中使用*意味着返回所有对象的所有列(a和b)。

  

INDUS2_MPS.dbo.main_mps_hs_analog的第一列,即logtime   然后应该遵循INDUS2_MPS.dbo.main_mps_hs_analog的其余列。

您可能想拼出每一列,否则如果您执行SELECT b.logtime,a.beam_current,b。* FROM ...它将返回logtime列两次。如果这是可以接受的,并且您不想键入200个列名称,那就去做吧。

答案 1 :(得分:1)

select 
    b.col1, a.col1, b.col2, b.col3, a.col10, b.col5+a.col69 -- list any columns in any order here
from 
    INDUS2_MPS.dbo.main_mps_hs_analog b 
        inner join INDUS2_BDS.dbo.DCCT a on a.logtime=b.logtime 
where 
    a.logtime BETWEEN '2014-10-10 07:17:00' AND '2014-10-10 08:47:00'

答案 2 :(得分:0)

您可以在select query中为前两列提供不同的别名,然后从查询中选择所有列

select 
    b.logtime [fistCol],
    a.beam_current [secondCol], 
    b.* 
from 
    INDUS2_MPS.dbo.main_mps_hs_analog b 
        inner join INDUS2_BDS.dbo.DCCT a on a.logtime=b.logtime 
where 
    a.logtime BETWEEN '2014-10-10 07:17:00' AND '2014-10-10 08:47:00'