标题: 求助一段SQL代码
时间: 2022-11-24发布,2022-11-24修改
--
-- 表的结构 `personnels_too`
--
CREATE TABLE `personnels_too` (
`id` int(11) NOT NULL COMMENT 'ID',
`name` varchar(255) COLLATE utf8_unicode_ci DEFAULT NULL COMMENT '姓名',
`relationship` varchar(255) COLLATE utf8_unicode_ci DEFAULT NULL COMMENT '关系',
`Gender` varchar(255) COLLATE utf8_unicode_ci DEFAULT NULL COMMENT '性别',
`nation` varchar(255) COLLATE utf8_unicode_ci DEFAULT NULL COMMENT '民族',
`uid` varchar(255) COLLATE utf8_unicode_ci DEFAULT NULL COMMENT '身份证号码',
`phone` varchar(255) COLLATE utf8_unicode_ci DEFAULT NULL COMMENT '手机号码',
`Culture` varchar(255) COLLATE utf8_unicode_ci DEFAULT NULL COMMENT '文化程度',
`marriage` varchar(255) COLLATE utf8_unicode_ci DEFAULT NULL COMMENT '婚姻状况',
`family` varchar(255) COLLATE utf8_unicode_ci DEFAULT NULL COMMENT '家庭户主',
`family_uid` varchar(255) COLLATE utf8_unicode_ci DEFAULT NULL COMMENT '户主身份证',
`life` int(11) DEFAULT NULL COMMENT '生存状况()',
`Village` varchar(255) COLLATE utf8_unicode_ci DEFAULT NULL COMMENT '村组',
`remarks` text COLLATE utf8_unicode_ci COMMENT '备注',
`WorkingAddress` text COLLATE utf8_unicode_ci,
`addtime` varchar(255) COLLATE utf8_unicode_ci NOT NULL,
`uptime` varchar(255) COLLATE utf8_unicode_ci NOT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci COMMENT='常驻人员名单';
--
-- 转存表中的数据 `personnels_too`
--
INSERT INTO `personnels_too` (`id`, `name`, `relationship`, `Gender`, `nation`, `uid`, `phone`, `Culture`, `marriage`, `family`, `family_uid`, `life`, `Village`, `remarks`, `WorkingAddress`, `addtime`, `uptime`) VALUES
(1, '张三', '户主', '男', '汉', '101100202202052252', '18888888888', '高中', '已婚', '张三', '101100202202052252', 1, '田系组', NULL, NULL, '', ''),
(2, '李娥', '配偶', '女', '汉', '101100202102052243', '18888888888', '高中', '已婚', '张三', '101100202202052252', 1, '田系组', NULL, NULL, '', ''),
(3, '王五', '户主', '男', '汉', '101100201102052243', '18888888888', '高中', '已婚', '王五', '101100201102052243', 1, '田系组', NULL, NULL, '', ''),
(4, '丽丽', '女', '女 ', '汉', '101100201702052243', '18888888888', '高中', '已婚', '王五', '101100201102052243', 1, '田系组', NULL, NULL, '', ''),
(5, '李爱', '女儿', '女', '汉', '101100202204052243', '18888888888', '高中', '未婚', '张三', '101100202202052252', 1, '田系组', NULL, NULL, '', '');
--
-- 转储表的索引
--
--
-- 表的索引 `personnels_too`
--
ALTER TABLE `personnels_too`
ADD PRIMARY KEY (`id`),
ADD UNIQUE KEY `id` (`id`);
--
-- 在导出的表使用AUTO_INCREMENT
--
--
-- 使用表AUTO_INCREMENT `personnels_too`
--
ALTER TABLE `personnels_too`
MODIFY `id` int(11) NOT NULL AUTO_INCREMENT COMMENT 'ID', AUTO_INCREMENT=6;
COMMIT;
`
『回复列表(17|显示机器人聊天)』
SQLite
代码看需要加索引
WITH
data(id, name, relationship, Gender, nation, uid, phone, Culture, marriage, family, family_uid, life, Village, remarks, WorkingAddress, addtime, uptime) AS (
VALUES
(1, '张三', '户主', '男', '汉', '101100202202052252', '18888888888', '高中', '已婚', '张三', '101100202202052252', 1, '田系组', NULL, NULL, '', ''),
(2, '李娥', '配偶', '女', '汉', '101100202102052243', '18888888888', '高中', '已婚', '张三', '101100202202052252', 1, '田系组', NULL, NULL, '', ''),
(3, '王五', '户主', '男', '汉', '101100201102052243', '18888888888', '高中', '已婚', '王五', '101100201102052243', 1, '田系组', NULL, NULL, '', ''),
(4, '丽丽', '女儿', '女', '汉', '101100201702052243', '18888888888', '高中', '已婚', '王五', '101100201102052243', 1, '田系组', NULL, NULL, '', ''),
(5, '李爱', '女儿', '女', '汉', '101100202204052243', '18888888888', '高中', '未婚', '张三', '101100202202052252', 1, '田系组', NULL, NULL, '', '')
)
SELECT family_uid, id, name, relationship, Gender, nation, uid, phone, Culture, marriage
FROM data
ORDER BY family_uid, family_uid != uid, id;
-- ORDER BY family_uid, relationship != '户主', id;
family_uid | id | name | relationship | Gender | nation | uid | phone | Culture | marriage |
---|---|---|---|---|---|---|---|---|---|
101100201102052243 | 3 | 王五 | 户主 | 男 | 汉 | 101100201102052243 | 18888888888 | 高中 | 已婚 |
101100201102052243 | 4 | 丽丽 | 女儿 | 女 | 汉 | 101100201702052243 | 18888888888 | 高中 | 已婚 |
101100202202052252 | 1 | 张三 | 户主 | 男 | 汉 | 101100202202052252 | 18888888888 | 高中 | 已婚 |
101100202202052252 | 2 | 李娥 | 配偶 | 女 | 汉 | 101100202102052243 | 18888888888 | 高中 | 已婚 |
101100202202052252 | 5 | 李爱 | 女儿 | 女 | 汉 | 101100202204052243 | 18888888888 | 高中 | 未婚 |
@李沐沐,你还希望,户主ID较小的整个家庭排前面,是嘛?若是:
SQL
代码若速度太慢,可加索引。看具体需要(加个 KEY(uid)
应该可以大幅加速。但总共就几千行,原来的速度应该也不会太慢)
SELECT a.family_uid, a.id, a.name, a.relationship, a.Gender, a.nation, a.uid, a.phone, a.Culture, a.marriage
FROM personnels_too a
JOIN personnels_too b ON b.uid = a.family_uid
ORDER BY b.id, a.family_uid != a.uid, a.id;
family_uid | id | name | relationship | Gender | nation | uid | phone | Culture | marriage |
---|---|---|---|---|---|---|---|---|---|
101100202202052252 | 1 | 张三 | 户主 | 男 | 汉 | 101100202202052252 | 18888888888 | 高中 | 已婚 |
101100202202052252 | 2 | 李娥 | 配偶 | 女 | 汉 | 101100202102052243 | 18888888888 | 高中 | 已婚 |
101100202202052252 | 5 | 李爱 | 女儿 | 女 | 汉 | 101100202204052243 | 18888888888 | 高中 | 未婚 |
101100201102052243 | 3 | 王五 | 户主 | 男 | 汉 | 101100201102052243 | 18888888888 | 高中 | 已婚 |
101100201102052243 | 4 | 丽丽 | 女儿 | 女 | 汉 | 101100201702052243 | 18888888888 | 高中 | 已婚 |