sql - 从多个表中选择时列名不明确

标签 sql sql-server database

我正在使用 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/

相关文章:

sql - 你能告诉我数据是什么时候插入到表中的吗

c# - 一对一关系不起作用

c# - 将列转换为行并更新

c# - 具有排名和唯一用户的高分

objective-c - 获取 FMDB 更新查询中受影响的行数

sql - 在 SQL 中使用位串(而不是整数)匹配位掩码

sql - 如何删除特定数据库特定时间的备份?我也不想给出文件的路径。有人可以指导我吗?

sql-server - 在 SQL Server 中禁用打印

php - 代码点火器 fatal error : Call to a member function query() on a non-object

java - Google App Engine(Java) 数据库自动生成的 ID