您的位置:首页 > 数据库

关于sql的关联查询、删除与子查询、删除

2014-07-02 12:23 176 查看
首先我有三张相互关联的数据库表分别是

role_table(角色表)、user_table(用户表)、blog_table(博客表)关联信息如下,现在我需要对三张表进行关联查询







一、子查询(查询角色为“学生”的所有博客)

SELECT * FROM blog_table WHERE userId IN
(SELECT id FROM user_table WHERE roleId IN 
(SELECT id FROM role_table WHERE roleName = '学生'));
这种查询简单 但是很耗时

二、使用JOIN关联查询(查询角色为“学生”的所有博客)

两级关联查询(查询名字为“lihua”的博客信息)

SELECT b.* FROM blog_table b INNER JOIN user_table u
ON u.id = b.userId WHERE u.userName='Lihua';


三级关联查询(查询角色为“学生”的所有博客)

SELECT b.* FROM blog_table b INNER 
JOIN user_table u ON u.id = b.userId 
JOIN role_table r ON r.id = u.roleId
WHERE r.roleName="学生";
使用关联查询可以大大加快查询速度。但关联表最好不要超过三张,否则容易降低其效率

关联删除

一、删除角色名称为“学生”的user信息

DELETE u FROM user_table u INNER JOIN role_table r ON
r.id = u.roleId WHERE r.roleName = '学生';
二、删除角色名称为“学生”的博客信息

DELETE b FROM blog_table b INNER
JOIN user_table u ON u.id = b.userId
JOIN role_table r ON r.id = u.roleId
WHERE r.roleName='学生';
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐