SQL编码约定:使用UNION的长选择语句

时间:2017-03-10 14:59:05

标签: sql sql-server convention

这是一个非常基本的问题,但我还没有在网上找到任何东西。

假设我有一个包含数百个长选择语句的大型SQL文件,如下所示:

SELECT 'col1', 'col2', 'col3', 'col4', 'col5', 'col6', 'col7', NULL UNION
SELECT 'col1', 'col2', 'col3', 'col4', 'col5', 'col6', 'col7', NULL 

这里的UNION应该在最后还是在前面,如下:

SELECT 'col1', 'col2', 'col3', 'col4', 'col5', 'col6', 'col7', NULL 
UNION SELECT 'col1', 'col2', 'col3', 'col4', 'col5', 'col6', 'col7', NULL

2 个答案:

答案 0 :(得分:1)

这是一个个人风格的问题。有人写道:

SELECT
id,
name,
dob
FROM PERSON;

有些人 - 像我一样 - 写道:

SELECT
  id
, name
, dob
FROM PERSON;

我这样做的一个推理(这是可辩论的),是你可以注释掉除了第一个之外的所有列,只需要两个破折号,而不必用逗号来摆弄。但可能只是因为我喜欢它。

出于同样的原因,我的朋友毛罗写道:

select 42,'Arthur Dent',date '1957-04-22' union all
select 43,'Ford Prefect',date '1900-08-01' union all
select 44,'Tricia McMillan',date '1959-03-07'
;

..我写道:

          SELECT 42,'Arthur Dent',DATE '1957-04-22'
UNION ALL SELECT 43,'Ford Prefect',DATE '1900-08-01'
UNION ALL SELECT 44,'Tricia McMillan',DATE '1959-03-07'
;

这里没有错误或正确。我建议你保持一致 - 与你自己,以及与你一起工作的所有人。

干杯 - 马可

答案 1 :(得分:0)

SELECT 'col1', 'col2', 'col3', 'col4', 'col5', 'col6', 'col7', NULL UNION
SELECT 'col1', 'col2', 'col3', 'col4', 'col5', 'col6', 'col7', NULL

      SELECT 'col1', 'col2', 'col3', 'col4', 'col5', 'col6', 'col7', NULL
UNION SELECT 'col1', 'col2', 'col3', 'col4', 'col5', 'col6', 'col7', NULL

没关系。

将根据第一个选择命名列。 UNION将删除重复项,UNION ALL赢了