Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/82.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在SQL中使用UNION垂直连接表行_Sql_Union - Fatal编程技术网

在SQL中使用UNION垂直连接表行

在SQL中使用UNION垂直连接表行,sql,union,Sql,Union,当我使用UNION SELECT STUNAME, STUGENDER, FROM STUDENT UNION SELECT STFNAME, STFGENDER FROM STAFF ORDER BY 1 ASC; 名称在输出中混合,有没有办法像这样垂直地将它们分开,但仍然使用UNION,我对此有分配,但仍然卡住了 STUNAME Alvin Jane STFNAME Lincoln Kate 如果我正确理解了您的问题,您应该使用以下内容: (SELECT S

当我使用
UNION

SELECT STUNAME, STUGENDER,
   FROM STUDENT
   UNION
   SELECT STFNAME, STFGENDER
   FROM STAFF
   ORDER BY 1 ASC;
名称在输出中混合,有没有办法像这样垂直地将它们分开,但仍然使用UNION,我对此有分配,但仍然卡住了

STUNAME
Alvin
Jane
STFNAME
Lincoln
Kate

如果我正确理解了您的问题,您应该使用以下内容:

(SELECT STUNAME, STUGENDER, 'student' as student FROM STUDENT)
UNION 
(SELECT STFNAME, STFGENDER, 'staff' as staff FROM STAFF)
order by 3,1 asc
字段名称必须相同,状态别名字段将包含它们所属的分类。

尝试此查询

SELECT CONCAT('Student',@curRow := @curRow + 1) AS student,STUNAME, STUGENDER FROM STUDENT JOIN (SELECT @curRow := 0) r
UNION 
SELECT CONCAT('Staff',@curRow1 := @curRow1 + 1) AS staff,STFNAME, STFGENDER FROM STAFF JOIN (SELECT @curRow1 := 0) r1;

正确地澄清您的问题。对不起,通常使用UNION会将不同表中的列连接到一个列中作为输出,有没有办法将输出行垂直分为两种类型的名称?而不是显示STUNAME:name1,name1…,name\n。有没有办法让它像STUNAME:name1,name2,name3 STFNAME:name4,name5,name6一样垂直使用UNION?
SELECT CONCAT('Student',@curRow := @curRow + 1) AS student,STUNAME, STUGENDER FROM STUDENT JOIN (SELECT @curRow := 0) r
UNION 
SELECT CONCAT('Staff',@curRow1 := @curRow1 + 1) AS staff,STFNAME, STFGENDER FROM STAFF JOIN (SELECT @curRow1 := 0) r1;