使用 SQL Server 2008
目标:从 table1 中选择一系列列插入到 table2
问题:在表 2 中需要插入一个附加列,该列可以从表 1 和表 3 之间的联接派生
当前代码
SELECT
table1.name,
table1.email,
table1.phone,
CASE WHEN table1.status = 'active' THEN 1 ELSE 0 END AS Active,
CASE WHEN table1.group_id = 3 THEN 5 ELSE table1.group_id END AS RoleId,
(SELECT
table3.UserID AS ParentID
FROM
table3
INNER JOIN
table1 ON
table3.ID = table1.table3_ID)
FROM
table1
WHERE
table1.group_id = 3 AND
table1.status = 'active'
目前此代码不起作用并返回“子查询返回超过 1 个值”错误。 我知道这可能不是使用嵌套选择的正确方法,正确的方法是什么?
如有必要,可以提供其他数据。 先感谢您。
最佳答案
问题是您需要一个相关子查询。这意味着您需要从子查询中删除 table1
:
SELECT table1.name, table1.email, table1.phone,
(CASE WHEN table1.status = 'active' THEN 1 ELSE 0 END) AS Active,
(CASE WHEN table1.group_id = 3 THEN 5 ELSE table1.group_id END) AS RoleId,
(SELECT table3.UserID
FROM table3
WHERE table3.ID = table1.table3_ID
) as ParentID
FROM table1
WHERE table1.group_id = 3 AND table1.status = 'active';
如果 table3
中有多个可能的匹配项,那么您将需要类似 select top 1 table3.UserId
或 select max(table3.UserId )
。
关于sql - 如何在 select 语句中添加从 select 语句派生的列?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18771709/