在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;