如何合并这两个select语句,以便返回3列?
第一个选择仅返回文本值,而第二个选择返回表列值。如果第二个表没有返回值,则第一个select仍然应该有值,而name列可以为null
SELECT 'column1', 'column2'
SELECT Name
FROM [dbo].[TableName]
WHERE ID = @id
非常感谢,
答案 0 :(得分:0)
你的意思是这样的:
SELECT 'column1', 'column2', Name
FROM [dbo].[TableName]
WHERE ID = @id
这将为每一行返回一行,表格中匹配ID
。
更新
此查询将完全符合您的要求:
IF (SELECT COUNT(Name) FROM [dbo].[TableName] WHERE ID = @id) = 0
BEGIN
SELECT 'column1', 'column2', NULL
END
ELSE
BEGIN
SELECT 'column1', 'column2', Name
FROM [dbo].[TableName]
WHERE ID = @id
END
答案 1 :(得分:0)
这会更简单,无需复制固定列:
DECLARE @name nvarchar(255)
SELECT @name=Name FROM [dbo].[TableName] WHERE ID = @id
SELECT 'column1', 'column2', @name AS 'Name'
答案 2 :(得分:0)
您可以使用以下一个查询:
SELECT
'column1',
'column2',
(
SELECT Name
FROM [dbo].[TableName]
WHERE ID = @id
) AS 'Name'
答案 3 :(得分:0)
如果看起来很可能只有一场比赛,那么Andriy或William的解决方案是最好的。如果出于某些奇怪的原因,Id不是主键,那么以下内容将按您的要求执行。
SELECT a.column1, a.column2, t.Name
FROM
(
SELECT 'column1' AS column1, 'column2' AS column2
) a
LEFT JOIN [dbo].[TableName] t ON (t.ID = @Id)
我觉得有点脏....