php里mysql面试题_PHP/MySQL编程-几道面试题sql语句汇总

本文介绍了如何在内容管理系统中创建和查询数据表,包括文章信息表和评论表的结构。通过SQL语句展示了如何获取按回复数量排序的文章标题列表,当文章无回复时显示回复数量为0。同时,讲解了SQL查询中的LEFT JOIN、COUNT函数和IFNULL函数的用法,以及如何进行排序和限制查询结果的数量。
摘要由CSDN通过智能技术生成

几道面试题汇总,并记录下来

1) 某内容管理系统中,表message有如下字段

id 文章id

title 文章标题

content 文章内容

category_id 文章分类id

hits 点击量

创建上表,写出MySQL语句

2)同样上述内容管理系统:表comment记录用户回复内容,字段如下

comment_id 回复id

id 文章id,关联message表中的id

comment_content 回复内容

写出sql

现通过查询数据库需要得到以下格式的文章标题列表,并按照回复数量排序,回复最高的排在最前面

文章id 文章标题 点击量 回复数量

select r.id,r.name,u.total,u.role_id from web_role as r left join (select count(id) as total,role_id from web_user_role group by user_id) as u on u.role_id=r.id order by u.total desc;

这条语句是正解,虽然表不同,但是结构类似,

fbe7b47bd917d5b6490363334fcf61ff.png

3e54ebce2f7335a4fe3373dfb24eaf84.png

7b3c9ee7cf8a602f088b5d8a53847738.png

用一个SQL语句完成上述查询,如果文章没有回复则回复数量显示为0

这里我我使用了 ifnull() 这个函数  ifnull(c.total,0)  如果 c.total 不是null 就显示c.total  如果是null 则显示0

1b65b09fbaef73a6b593ea0647fab5c5.png

未使用ifnull  则没有找到的数据  就显示null了select n.id,n.classname,c.total from web_articlenav as n left join(select count(id) as total,nav from web_article group by nav) as c on c.nav=n.id;

使用了ifnull 就会把是null的显示成 0select n.id,n.classname,ifnull(c.total,0) from web_articlenav as n left join(select count(id) as total,nav from web_article group by nav) as c on c.nav=n.id;

这表语句使用了order by 排序 descselect n.id,n.classname,ifnull(c.total,0) as total from web_articlenav as n left join(select count(id) as total,nav from web_article group by nav) as c on c.nav=n.id order by c.total desc;

这表语句使用了order by 排序 desc 并进行了 limit 10select

n.id,n.classname,ifnull(c.total,0) as total from web_articlenav as n

left join(select count(id) as total,nav from web_article group by nav)

as c on c.nav=n.id order by c.total desc limit 10;

其他sql语句链表查询:

select r.id,r.name from web_role as r left join (select count(id) as total,role_id from web_user_role group by user_id) as u on u.role_id=r.id order by u.total desc;

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值