MySQL 用户与旅客信息查询优化

本页面提供 MySQL 数据库中 User 表和 Passenger 表的关联查询示例,涵盖以下几种查询:

  1. 查询没有添加旅客的那些账号信息(用户名、密码、余额)
SELECT User.用户名, User.密码, User.余额
FROM User
LEFT JOIN Passenger ON User.用户名 = Passenger.用户名
WHERE Passenger.旅客id IS NULL;
  1. 查询添加旅客数量大于 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;
  1. 查询每个账号,各自添加了多少个姓张的旅客
SELECT User.用户名, COUNT(Passenger.旅客id) AS 张姓旅客数量
FROM User
LEFT JOIN Passenger ON User.用户名 = Passenger.用户名
WHERE Passenger.旅客姓名 LIKE '张%'
GROUP BY User.用户名;
  1. 查询每个账号,添加的男女旅客分别是多少
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.用户名;
  1. 查询 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';

注意: 以上示例代码中,表名 User 和 Passenger,以及字段名,需要根据您的实际数据库情况进行调整。


原文地址: https://www.cveoy.top/t/topic/pQQY 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录