今天我遇到了一些奇怪的事情(或者我厌倦了看到明显的事情)
免责声明:无需继续阅读...是的,我太累了,这是废话...
SQL 服务器:11.0.6251.0
我回答了this question发现所有行首先都有一个“E”。
简而言之,这是一样的
DECLARE @tblA TABLE(Id INT,SomeValue VARCHAR(100));
INSERT INTO @tblA VALUES (1,'blah');
DECLARE @tblB TABLE(Id INT,SomeValue VARCHAR(100));
INSERT INTO @tblA VALUES (2,'blub');
SELECT 'A' AS SourceFlag, Id, SomeValue
FROM @tblA
UNION ALL
SELECT 'B', Id, SomeValue
FROM @tblB
这是我回来的
SourceFlag Id SomeValue
A 1 blah
A 2 blub
为什么第二行没有得到“B”?
执行计划:
一个计算标量显示[Expr1004] = Skalaroperator('A')另一个显示[Expr1009] = Skalaroperator('B') em>.
串联将结果定义为Union1010;联盟1011; Union1012,而Union1010在[Union1010] = (Expr1004; Expr1009);中定义。 [Union1011] = (Id;Id); [Union1012] = (SomeValue; SomeValue).
最佳答案
没有数据被插入到@tblB
中。 ID 2 已插入到 @tblA
中。
DECLARE @tblB TABLE(Id INT,SomeValue VARCHAR(100));
INSERT INTO @tblA VALUES (2,'blub');
关于sql-server - UNION 和字面值,奇怪的结果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50379494/