【发布时间】:2020-01-03 05:11:35
【问题描述】:
我需要完全外部加入这些子查询
SET @n1 = 0;
SET @n2 = 0;
SELECT * FROM
(SELECT (@n1:=@n1 + 1) AS n, name FROM occupations WHERE occupation="Doctor") AS t1
LEFT OUTER JOIN
(SELECT (@n2:=@n2 + 1) AS n, name FROM occupations WHERE occupation="Professor") AS t2
ON t1.n=t2.n
UNION
SELECT * FROM
(SELECT (@n1:=@n1 + 1) AS n, name FROM occupations WHERE occupation="Doctor") AS t1
RIGHT OUTER JOIN
(SELECT (@n2:=@n2 + 1) AS n, name FROM occupations WHERE occupation="Professor") AS t2
ON t1.n=t2.n
;
在这里,我不得不一次又一次地编写相同的子查询。
如果有像下面这样的方法就很简单了
SET @n1 = 0;
SET @n2 = 0;
t1 = (SELECT (@n1:=@n1 + 1) AS n, name FROM occupations WHERE occupation="Doctor");
t2 = (SELECT (@n2:=@n2 + 1) AS n, name FROM occupations WHERE occupation="Professor");
SELECT * FROM t1 LEFT OUTER JOIN t2 ON t1.n=t2.n
UNION
SELECT * FROM t1 RIGHT OUTER JOIN AS t2 ON t1.n=t2.n;
但我不知道有什么方法可以做这样的事情。此外,我不想创建任何视图或临时表来执行此操作。请帮忙。谢谢。
【问题讨论】:
-
示例数据在这里会有所帮助。
-
你使用
SELECT (@n1:=@n1 + 1) AS n的目的是什么? -
我正在尝试解决hackerrank.com 的问题。我可以解决问题。但是代码太多了。这里link解决问题
-
你能在这里发布问题(或类似问题)吗?
-
在 MySQL 中未定义在 select 语句中读取和写入相同的变量,并且从 8 开始已弃用。请参阅手册重新变量和赋值。