连接查询
- 查询所有房间,并显示房间主人
SELECT r.*,m.manName FROM t_room r JOIN t_man m ON r.manId=m.id; – 方法一
SELECT r.*,m.manName FROM t_room r,t_man m WHERE r.manId = m.id; – 方法二
– 查询张三所有的房间
SELECT r.* FROM t_room r JOIN t_man m ON r.manId=m.id WHERE m.manName=’张三’;
– 查询张三有几套房子
SELECT COUNT(*) FROM t_man m,t_room r WHERE m.id=r.manId
AND m.manName=’张三’ GROUP BY m.manName;
– 查询每个用户有几套房间
SELECT m.manName ‘房主’,COUNT(*) ‘房间总数’ FROM t_man m,t_room r WHERE
m.id=r.manId GROUP BY m.manName;
– 内连接是指运用比较运算符根据每个表共有的列的值匹配两个表中的行。
– 外联接是指不管有没有匹配,被定义了外联接的表数据都要出现在结果中。
– 分类
– 左外联接
– 右外联接
– 查询所有用户拥有房间的情况
SELECT m.*,r.address FROM t_man m JOIN t_room r ON m.id = r.manId;
SELECT m.*,r.address FROM t_man m LEFT JOIN t_room r ON m.id = r.manId;– 左外连接
SELECT m.*,r.address FROM t_room r RIGHT JOIN t_man m ON m.id = r.manId;– 右外连接
– 查询哪个用户没有房子
SELECT m.* FROM t_man m LEFT JOIN t_room r ON m.id = r.manId WHERE r.address IS NULL;– 方法1
SELECT m.* FROM t_man m LEFT JOIN t_room r ON m.id = r.manId GROUP BY m.manName – 方法2
HAVING COUNT(r.address)=0;
– 显示所有用户拥有几套房间
SELECT m.manName’用户’,COUNT(r.address)’房间数量’ FROM t_man m LEFT JOIN
t_room r ON m.id = r.manId GROUP BY m.manName;