在學(xué)生管理系統(tǒng)中,經(jīng)常需要查詢學(xué)生的成績(jī)情況。但是有時(shí)候需要將不同科目的成績(jī)統(tǒng)計(jì)在一起,這時(shí)候就需要用到mysql的表合并查詢功能。
首先,我們需要?jiǎng)?chuàng)建學(xué)生與成績(jī)表。可以創(chuàng)建兩個(gè)表,一個(gè)是學(xué)生表,一個(gè)是成績(jī)表。
CREATE TABLE student ( id INT NOT NULL, name VARCHAR(50), age INT, PRIMARY KEY (id) ); CREATE TABLE score ( id INT NOT NULL, subject VARCHAR(50), score INT, PRIMARY KEY (id, subject) );
接下來(lái),我們可以插入一些測(cè)試數(shù)據(jù)。
INSERT INTO student (id, name, age) VALUES (1, '張三', 20), (2, '李四', 21), (3, '王五', 22); INSERT INTO score (id, subject, score) VALUES (1, '數(shù)學(xué)', 90), (1, '英語(yǔ)', 85), (2, '數(shù)學(xué)', 95), (2, '英語(yǔ)', 80), (3, '數(shù)學(xué)', 92), (3, '英語(yǔ)', 87);
現(xiàn)在我們想要獲得每個(gè)學(xué)生的數(shù)學(xué)和英語(yǔ)成績(jī)的總分,可以使用以下代碼進(jìn)行查詢。
SELECT s.id, s.name, s.age, SUM(sc1.score) AS math_score, SUM(sc2.score) AS english_score FROM student s LEFT JOIN score sc1 ON s.id = sc1.id AND sc1.subject = '數(shù)學(xué)' LEFT JOIN score sc2 ON s.id = sc2.id AND sc2.subject = '英語(yǔ)' GROUP BY s.id;
以上查詢語(yǔ)句中,我們使用了LEFT JOIN來(lái)將學(xué)生表和成績(jī)表合并查詢。同時(shí)使用了SUM函數(shù)對(duì)成績(jī)進(jìn)行求和,并且使用GROUP BY對(duì)學(xué)生進(jìn)行分組。
通過(guò)以上操作,我們可以得到一個(gè)包含學(xué)生名字、年齡、數(shù)學(xué)成績(jī)和英語(yǔ)成績(jī)的表格。