0

今天我发现了一个类似的查询

SELECT 1 [Col_name] FROM MyTable

SELECT  [Col_name] FROM MyTable

两者似乎都返回相同的结果。我很困惑。

这是实际的查询:

SELECT 1 Col1 FROM [Table1] WHERE Col1 = 1 

UNION

SELECT 2 Col1  FROM [Table1] 

任何帮助表示赞赏

4

2 回答 2

3

您的查询:

SELECT 1 [Col_name] FROM MyTable

将返回1带有别名的文字值col_name。即使col_name是表中的标识符。

然而:

SELECT [Col_name] FROM MyTable;

col_name将从您的表中选择。

与以下相同:

SELECT 1 Col1 FROM [Table1] WHERE Col1 = 1 
UNION
SELECT 2 Col1  FROM [Table1] 

只会给你两行:

1
2

不管表中的值。因为SELECT 1 Col1 FROM [Table1] WHERE Col1 = 1返回1带有别名的文字值col1,所以返回带有相同别名的SELECT 2 Col1 FROM [Table1] 文字值(不同的选择)集合运算符,只会给你两个值 (1, 2),因为它们是唯一的不同值。2col1UNION

现场演示

于 2012-11-19T13:53:48.657 回答
1

在实际查询中,Col1被称为值为 的列的别名1

如果Col1未指定,则具有给定值的列1没有 columnName。

于 2012-11-19T13:53:13.607 回答