2014-02-23 135 views
0

我必須找出輸出爲最高分的學生姓名嗎?我的兩個表都是 -從兩個表中獲取數據?

CREATE TABLE student(Fields_ID INT, Name VARCHAR(20)); 
     INSERT INTO student(Fields_ID,Name) VALUES(30,'JYOTI'); 
     INSERT INTO student(Fields_ID,Name) VALUES(31,'KIRTI'); 
     INSERT INTO student(Fields_ID,Name) VALUES(32,'YOGITA'); 
     INSERT INTO student(Fields_ID,Name) VALUES(33,'RASHMI'); 
     INSERT INTO student(Fields_ID,Name) VALUES(34,'NUPUR'); 
SELECT * FROM student; 
CREATE TABLE Marks(Fields_ID INT, Student_ID INT NOT NULL,marks INT NOT NULL); 
     INSERT INTO Marks(Fields_ID,Student_ID,Marks) VALUES (30,40,100); 
     INSERT INTO Marks(Fields_ID,Student_ID,Marks) VALUES (31,41,88); 
     INSERT INTO Marks(Fields_ID,Student_ID,Marks) VALUES (32,42,72); 
     INSERT INTO Marks(Fields_ID,Student_ID,Marks) VALUES (33,43,33); 
     INSERT INTO Marks(Fields_ID,Student_ID,Marks) VALUES (34,44,15); 
SELECT * FROM Marks; 

我試圖從下面的代碼返回所需的出來,但它不返回相同的。任何想法爲什麼它沒有返回正確的值。我是MySql的初學者,所以我無法找出問題所在。

SELECT student.name,Marks.marks 
    FROM student INNER JOIN Marks 
    ON student.Fields_ID=Marks.Fields_ID; 
+1

'Student_ID'鏈接到什麼? – hjpotter92

+0

什麼數據被返回? – Andrew

+1

這就是你需要[**小提琴**](http://sqlfiddle.com/#!2/a5324/2) –

回答

3
SELECT student.name,Marks.marks 
FROM student INNER JOIN Marks 
ON student.Fields_ID=Marks.Fields_ID 
where Marks.marks = (select max(marks) from Marks); 
1
SELECT student.name,Marks.marks 
    FROM student 
    INNER JOIN Marks 
    ON student.Fields_ID=Marks.Student_ID 
ORDER BY Marks.marks DESC 
LIMIT 1 
1
 SELECT student.name,Marks.marks 
     FROM student INNER JOIN Marks 
     ON student.Fields_ID=Marks.Fields_ID 
    ORDER by marks DESC; 

http://sqlfiddle.com/#!2/a5324/11

這是所需的輸出?

編輯:添加限制1來查詢,如果你只想得到一個結果。

+1

我認爲你的意思是'排序'而不是'分組'編輯 – Andrew

+0

@Andrew,編輯。 – sinisake