Mysql SQL子查询问题3
我的SQL代码有问题 当我运行这段代码时,我得到这样的错误消息: ** 子查询返回了多个值。这是不允许的,因为 子查询后面是=,!=,=或者当子查询用作 表情 ** 我不知道如何更正此代码以运行它 有人能帮我看看吗 谢谢你的帮助Mysql SQL子查询问题3,mysql,sql,sql-server,sqlite,Mysql,Sql,Sql Server,Sqlite,我的SQL代码有问题 当我运行这段代码时,我得到这样的错误消息: ** 子查询返回了多个值。这是不允许的,因为 子查询后面是=,!=,=或者当子查询用作 表情 ** 我不知道如何更正此代码以运行它 有人能帮我看看吗 谢谢你的帮助 SELECT dbo.FRA$.[GUID], dbo.FRA$.[Last Name], dbo.FRA$.[First Name], dbo.FRA$.[HR Manager Last Name], dbo.FRA$.[HR Manager First Na
SELECT dbo.FRA$.[GUID], dbo.FRA$.[Last Name],
dbo.FRA$.[First Name], dbo.FRA$.[HR Manager Last Name],
dbo.FRA$.[HR Manager First Name], (SELECT dbo.FRA$.[Business Email Address] FROM dbo.FRA$ t WHERE t.[HR Manager ID] = t.[Emplid]) AS [HR Manager E-Mail],
dbo.LOC.Descr AS [COMPANY NAME], dbo.FRA$.[Location Code],
dbo.LOC.[ADDRESS], dbo.LOC.Postal, dbo.LOC.City, dbo.FRA$.[National ID], dbo.FRA$.[Current Employee Class Desc] AS [Current Empl Class],
dbo.FRA$.[Contract type description] AS [CONTRACT TYPE], dbo.FRA$.[Business Title],
CASE dbo.FRA$.[Current Employee Class Desc]
WHEN 'Operator' THEN 10
WHEN 'Clerical worker' THEN 22
WHEN 'Technician' THEN 32
WHEN 'Supervisor' THEN 33
WHEN 'Manager&Engineer' THEN 54
END AS [Salary brutto],
FORMAT(dbo.FRA$.[Birthdate],'yyyy-MM-dd') AS [Birth Date], FORMAT(dbo.FRA$.[Last Start Date],'yyyy-MM-dd') AS [Hire Date]
FROM dbo.FRA$
INNER JOIN dbo.LOC
ON dbo.FRA$.[Location Code] = dbo.LOC.[Location]
WHERE [HR Status] IN ('International Assignment','Active','Leave of Absence');
试着替换
SELECT dbo.FRA$.[Business Email Address] FROM dbo.FRA$ t WHERE t.[HR Manager ID] = t.[Emplid]
与
从子查询返回的行中只取一行您好,谢谢您的帮助。我试过了,结果代码显示的是员工的电子邮件,而不是人力资源经理的电子邮件地址?你好,米雷克。我编辑了我的答案。您应该将子查询表中的t[Emplid]绑定到Main表中的[HR Manager ID]。只要去掉t。或者最好为主表创建一个别名。您好,Dmitry,我已更正为从dbo.FRA$t中选择排名前1的dbo.FRA$.[Business Email Address],其中dbo.FRA$.[HR Manager ID]=t.[Emplid]作为[HR Manager E-Mail],但仍然从员工而不是人力资源经理那里收到电子邮件?甚至问题可以在SELECT dbo.FRA$.[Business Email Address]中。可能您需要使用别名t来选择t.[Business Email Address]Mirek,我做了一些编辑,最后尝试从dbo.FRA$t中选择TOP 1 t.[Business Email Address],其中[HR Manager ID]=t.[Emplid],并且此查询应该在MySQL、MS SQL Server和Sqlite上运行???
SELECT TOP 1 t.[Business Email Address] FROM dbo.FRA$ t WHERE [HR Manager ID] = t.[Emplid]