Mysql 从一个表中检索两个xml结果的单个查询
我的SQL中有这个表。我需要一个查询来根据一个表中的“类类型”检索两个不同的XML结果 下面是我的预期结果Mysql 从一个表中检索两个xml结果的单个查询,mysql,xml,Mysql,Xml,我的SQL中有这个表。我需要一个查询来根据一个表中的“类类型”检索两个不同的XML结果 下面是我的预期结果 Table Class Firstname Lastname mark V John Lim 60 V Wills smith 80 VI Mark Bay 75 VI Carl mark 65 Result1 v 约翰
Table
Class Firstname Lastname mark
V John Lim 60
V Wills smith 80
VI Mark Bay 75
VI Carl mark 65
Result1
v
约翰
林
60
v
遗嘱
史密斯
80
结果2
不及物动词
做记号
海湾
75
不及物动词
卡尔
做记号
65
非常感谢 对于查询部件,使用UNION
Result1
<Studentslist>
<Students>
<class>V</class>
<Firstname>John</Firstname>
<Lastname>Lim</Lastname>
<mark>60</mark>
</Students>
<Students>
<class>V</class>
<Firstname>Wills</Firstname>
<Lastname>smith</Lastname>
<mark>80</mark>
</Students>
</Studentslist>
Result2
<Studentslist>
<Students>
<class>VI</class>
<Firstname>Mark</Firstname>
<Lastname>Bay</Lastname>
<mark>75</mark>
</Students>
<Students>
<class>VI</class>
<Firstname>Carl</Firstname>
<Lastname>mark</Lastname>
<mark>65</mark>
</Students>
<Studentslist>
编辑:使用光标
(SELECT class, firstname, lastname, mark from students where class='V')
UNION ALL
(SELECT class, firstname, lastname, mark from students where class='VI')
你好,谢谢你的回复。没有where条款,还有其他方法吗?这是因为我事先不知道类的类型。那么使用游标怎么样?编辑了答案。
DELIMITER |
Drop procedure if exists `GetData`;
CREATE PROCEDURE `GetData`()
BEGIN
DECLARE bDone INT;
DECLARE var1 CHAR(16);
DECLARE curs CURSOR FOR SELECT distinct(class) FROM students;
DECLARE CONTINUE HANDLER FOR NOT FOUND SET bDone = 1;
SET bDone = 0;
DROP TEMPORARY TABLE IF EXISTS tblResults;
CREATE TEMPORARY TABLE IF NOT EXISTS tblResults (
class varchar(255),
firstname varchar(255),
lastname varchar(255),
mark varchar(255)
);
OPEN curs;
emp_loop: LOOP
FETCH curs INTO var1;
IF bDone=1 THEN /* No more rows*/
LEAVE emp_loop;
END IF;
INSERT INTO tblResults SELECT class, firstname, lastname, mark FROM `students` where class=var1;
END LOOP emp_loop;
CLOSE curs;
SELECT * FROM tblResults;
END|
DELIMITER ;