mysql查询基于User表字段为用户名密码 余额 和 Passenger表字段为旅客id旅客姓名性别身份证号码电话号码用户名查询1查询没有添加旅客的那些账号信息用户名、密码、余额2查询添加旅客数量大于8的账号信息用户名、密码、旅客数量、余额3查询每个账号各自添加了多少个姓张的旅客4查询每个账号添加的男女旅客分别是多少5查询A1账号所关联的旅客信息姓名、手机号、性别、身份证号后六位旅客手机号中奖四
1)查询没有添加旅客的账号信息(用户名、密码、余额)
SELECT User.用户名, User.密码, User.余额 FROM User LEFT JOIN Passenger ON User.用户名 = Passenger.用户名 WHERE Passenger.旅客id IS NULL;
2)查询添加旅客数量大于8的账号信息(用户名、密码、旅客数量、余额)
SELECT User.用户名, User.密码, COUNT(Passenger.旅客id) AS 旅客数量, User.余额 FROM User LEFT JOIN Passenger ON User.用户名 = Passenger.用户名 GROUP BY User.用户名, User.密码, User.余额 HAVING COUNT(Passenger.旅客id) > 8;
3)查询每个账号,各自添加了多少个姓张的旅客
SELECT User.用户名, COUNT(Passenger.旅客id) AS 张姓旅客数量 FROM User LEFT JOIN Passenger ON User.用户名 = Passenger.用户名 WHERE Passenger.旅客姓名 LIKE '张%' GROUP BY User.用户名;
4)查询每个账号,添加的男女旅客分别是多少
SELECT User.用户名, SUM(CASE WHEN Passenger.性别 = '男' THEN 1 ELSE 0 END) AS 男性旅客数量, SUM(CASE WHEN Passenger.性别 = '女' THEN 1 ELSE 0 END) AS 女性旅客数量 FROM User LEFT JOIN Passenger ON User.用户名 = Passenger.用户名 GROUP BY User.用户名;
5)查询A1账号所关联的旅客信息(姓名、手机号、性别、身份证号后六位) (旅客手机号中奖四位用****替代) (身份证号只显示后六位)
SELECT Passenger.旅客姓名, CONCAT(SUBSTRING(Passenger.电话号码, 1, LENGTH(Passenger.电话号码)-4), '****') AS 手机号, Passenger.性别, SUBSTRING(Passenger.身份证号码, LENGTH(Passenger.身份证号码)-5) AS 身份证号后六位 FROM User LEFT JOIN Passenger ON User.用户名 = Passenger.用户名 WHERE User.用户名 = 'A1'
原文地址: http://www.cveoy.top/t/topic/h71v 著作权归作者所有。请勿转载和采集!