我必须找出输出作为最高分的学生姓名?我的两张桌子都是 -
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;
答案 0 :(得分: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 :(得分: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
答案 2 :(得分: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
这是期望的输出?
编辑:如果您想要JUST ONE结果,请添加LIMIT 1进行查询。