繁体   English   中英

从不相关的SQL子查询返回多行

[英]Return multiple rows from unrelated SQL subqueries

我正在编写一个SQL脚本来检查MySQL数据库的完整性。 这些查询检查不同表的不同方面,因此它们不相关。 我不想联系他们。 我只想一个接一个地查看不同查询的结果。

单个查询工作正常,但我想同时运行它们,但将结果分开。 他们什么也不能返回,也可以返回多行。 (理想情况下,我希望标题使结果更清晰。)

错误是

“错误代码:1242。子查询返回的行数超过1”

这是我尝试过的:

SELECT
(-- Teams not associated with any employees
SELECT id 
  FROM teams
 WHERE NOT EXISTS
          (SELECT id 
             FROM employee_teams
            WHERE employee_teams.teamID IN(teams.id))) AS TeamNoEmployee,

(-- Teams deleted but associated with employees
SELECT teamID 
  FROM employee_teams
 WHERE NOT EXISTS
          (SELECT id 
             FROM teams
            WHERE teams.id IN(employee_teams.teamID))) AS TeamsDeleted

更新:@JohnHC知道了。 这是我的新版本。 我需要能够为每个查询添加标头,以便能够区分它们。

-- Teams not associated with any employees
SELECT 'Team No Employee' AS Test, id
  FROM teams
 WHERE NOT EXISTS
          (SELECT id 
             FROM employee_teams
            WHERE employee_teams.teamID IN(teams.id))
UNION
-- Teams deleted but associated with employees
SELECT 'Teams Deleted', teamID 
  FROM employee_teams
 WHERE NOT EXISTS
          (SELECT id 
             FROM teams
            WHERE teams.id IN(employee_teams.teamID))

您并没有真正将表格中的内容关联起来。 反过来尝试,就像这样:

select 'Empty Team' as Scenario, id
from teams t1
left join employee_teams et
  on et.teamID = t1.id
where et.id is null
union 
select 'Deleted Team', teamid
from employee_teams et
left join teams t2
  on t2.id = et.teamID
where t2.id is null

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM