你需要了解join操作
至于主键,你可以用user_id和article_id一起作为复合主键,最简单的作法如下(假定你的用户id和文章id不变。。当然一般是不变的)...
create table shoucang_table
(
user_id int(11),
article_id int(11),
create_at datetime,
primary key (user_id ,article_id )
)
这样要知道用户2的收藏列表,可以
`select article_table.id,article_table.title,article_table.author from
article_table inner join shoucang_table
on shoucang_table.user_id=2 and shoucang_table.article_id=article_table.id`
join把收藏表和文章表连接起来,on后面是条件。这里指定收藏表中用户id为2,且收藏表的文章id和文章表id对应。
有疑惑欢迎在评论里提出...
其他:
语句可以优化下,因为join操作其实是两张表的叉乘,会将m条数据的收藏表和n条数据的文章表合成一个m*n的大表。因此可以选中收藏表中用户id为2的作为子表,假设有k条(k<
select article_table.id,article_table.title,article_table.author from article_table
inner join
(select * from shoucang_table where user_id=2) as shoucang
on shoucang.article_id=article_table.id
当然可以建立表的索引来进一步优化,这些以后再研究先了解mysql的常用操作吧