求一段困扰多时的SQL语句

来源:百度知道 编辑:UC知道 时间:2024/09/22 07:50:56
有两个表,article为文章表,file为文章附件表,具体结构如下

文章表article
id content
1 内容内容
2 内容内容
3 内容内容
4 内容内容
5 内容内容
------------------
附件表file
id url fid(父ID,对应 article 表的id 字段)
1 路径 1
2 路径 2
3 路径 2
4 路径 3
5 路径 4
6 路径 5

之前我的是语句是
SELECT u.*,a.* FROM article AS a,file AS u WHERE a.id=u.fid ORDER BY a.id DESC LIMIT 5
但是这样同一篇文章则可能出现多次(如article.id为2的文章则出现了2次)

现在我想取出5条记录,每条记录包含文章内容和附件的RUL,但是不管某条文章有几个附件,该文章都只能出现1次(该文章的附件URL可只取其中一个)
请问这样的语句如何写?

select a.*,u.*
from a,u
where a.id = u.fid
group by a.id
order by a.id
limit 5

个人觉得数据库设计有问题,你对应了两个父级ID,然后却又反过来想实现一对一,貌似难以理解

SELECT u.*,distinct a.*
FROM article AS a,file AS u
WHERE a.id=u.fid
ORDER BY a.id DESC LIMIT 5

SELECT u.*,a.* FROM article AS a,(select * from file where id in (select Min(ID) from file group by fid)) AS u WHERE a.id=u.fid ORDER BY a.id DESC

file是关键字段 不要用作表名```

select a.*,u.*
from article as a,file as u
where a.id = u.fid
group by a.id
order by a.id
limit 5