Mysql 从2个表检索数据的SQL查询语法
我在Mysql中有两个表:authors和articles 我有一些作者,每一篇都有几篇文章 我需要具有此查询结果的sql查询: 检索3位按年龄排序的作者及其所属的所有文章 在我的例子中,它将是Mysql 从2个表检索数据的SQL查询语法,mysql,Mysql,我在Mysql中有两个表:authors和articles 我有一些作者,每一篇都有几篇文章 我需要具有此查询结果的sql查询: 检索3位按年龄排序的作者及其所属的所有文章 在我的例子中,它将是 ID FIRSTNAME LASTNAME AGE AUTHORID TITLE PRICE 6 Salido Gomes 90 6 All 3 1 6 Salido Gomes 90
ID FIRSTNAME LASTNAME AGE AUTHORID TITLE PRICE
6 Salido Gomes 90 6 All 3 1
6 Salido Gomes 90 6 All 3 33
6 Salido Gomes 90 6 All 3 3
5 Vitora Mantora 45 5 Total 3 99
5 Vitora Mantora 45 5 Total 3 33
5 Vitora Mantora 45 5 Total 3 12
3 Joe Smith 43 3 Python 5
3 Joe Smith 43 3 Python 2 22
3 Joe Smith 43 3 Python 3 44
3 Joe Smith 43 3 Python 4 12
3 Joe Smith 43 3 Python 5 67
我用
结果错误
ID FIRSTNAME LASTNAME AGE AUTHORID TITLE PRICE
6 Salido Gomes 90 6 All 3 1
6 Salido Gomes 90 6 All 3 33
6 Salido Gomes 90 6 All 3 3
如果您只想包括在前三位最老作者中撰写过任何文章的作者,请尝试在子查询中的作者和文章之间进行联接,以获得三位最老作者,并使用DISTINCT消除重复:-
SELECT *
FROM
(
SELECT DISTINCT authors.id, authors.firstname, authors.lastname, authors.age
FROM authors
JOIN articles
ON authors.id = articles.authorId
ORDER BY authors.age
DESC
LIMIT 3
) author_sub
JOIN articles
ON author_sub.id = articles.authorId
这里的问题是,在您最老的3位作者中,有2位没有在sql FIDLE中提供的ID 7和ID 8的测试数据中编写任何文章。因此,只返回单个作者的详细信息。
SELECT *
FROM
(
SELECT DISTINCT authors.id, authors.firstname, authors.lastname, authors.age
FROM authors
JOIN articles
ON authors.id = articles.authorId
ORDER BY authors.age
DESC
LIMIT 3
) author_sub
JOIN articles
ON author_sub.id = articles.authorId