从两个表中获取数据?

时间:2014-02-23 11:44:02

标签: mysql

我必须找出输出作为最高分的学生姓名?我的两张桌子都是 -

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;

3 个答案:

答案 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进行查询。