我正在使用 SQL Server 2012,在从不同表中选择用户名时,我收到以下错误:
Msg 209, Level 16, State 1, Line 6 Ambiguous column name 'UserName'
SELECT *
FROM Signup,
Pers_D,
Edu_D,
Dep_S
WHERE UserName LIKE '%Hwl123%';
最佳答案
这不能以那种方式完成。逗号表示 - 您正在尝试加入这些表。不是工会。
您收到错误 Ambiguous column name 'UserName'
,因为多个表中包含具有该名称的列,而服务器不了解在何处应用此过滤器。
在简单的语句中,解决方案可能如下所示:
SELECT *
FROM Signup as s
WHERE s.UserName LIKE '%Hwl123%'
UNION ALL
SELECT *
FROM Pers_D as p
WHERE p.UserName LIKE '%Hwl123%'
UNION ALL
SELECT *
FROM Edu_D as e
WHERE e.UserName LIKE '%Hwl123%'
UNION ALL
SELECT *
FROM Dep_S as d
WHERE d.UserName LIKE '%Hwl123%'
这实际上就是您要尝试做的事情。
但是您的方法正在将您带到那里:
SELECT s.*, p.*, e.*, d.*
FROM Signup s
INNER JOIN Pers_D p ON p.??? = s.???
INNER JOIN Edu_D e on e.??? = ???
INNER JOIN Dep_S d on d.??? = ???
WHERE [???].UserName LIKE '%Hwl123%' ---<<< ambiguity: s.UserName? p.UserName? e.UserName? d.UserName?
关于sql - 从多个表中选择时列名不明确,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38108310/