如何样查找同一姓名的数据
程序员文章站
2024-02-10 23:16:46
...
怎么样查找同一姓名的数据?
表A
id name kemu
1 张龙 作文
2 张龙 数学
3 李四 作文
5 王五 作文
6 赵虎 数学
7 赵虎 口才
8 赵虎 珠心算
请问怎么用SQL语句查找出张三和赵虎
多科
点击上面的搜索后显示为:
1 张龙
2 赵虎
------解决方案--------------------
张龙
赵虎
------解决方案--------------------
1.先去掉相同名字,科目1也相同的记录
2.找出多个name的记录
lz,你这张表原本是想储存学生的选课情况,用“建对值”的设计是好的,为何后面会延伸那么多科目呢?很多复杂低效率的sql就是从不合理的表设计开始的!
表A
id name kemu
1 张龙 作文
2 张龙 数学
3 李四 作文
5 王五 作文
6 赵虎 数学
7 赵虎 口才
8 赵虎 珠心算
请问怎么用SQL语句查找出张三和赵虎
多科
点击上面的搜索后显示为:
1 张龙
2 赵虎
------解决方案--------------------
drop table A;name
create table A (
id int,
name varchar(10),
kemu1 varchar(10)
) charset=gbk;
set names gbk;
insert into A values
(1, '张龙', '珠心算'),
(2, '张龙', '口才'),
(3, '赵虎', '珠心算'),
(4, '赵虎', '作文'),
(5, '王朝', '数学'),
(6, '王朝', '数学'),
(7, '马汉', '绘画');
select DISTINCT A.name
from A,
(select name, group_concat(kemu1 order by kemu1) as klist from A group by name HAVING count(DISTINCT kemu1)>1) B
where find_in_set(A.kemu1, B.klist)
张龙
赵虎
------解决方案--------------------
SELECT name FROM t_xuanke
WHERE id in( SELECT id FROM t_xuanke GROUP BY name,kemu1 HAVING count(*)GROUP BY `name`
HAVING COUNT(*)>1
1.先去掉相同名字,科目1也相同的记录
2.找出多个name的记录
lz,你这张表原本是想储存学生的选课情况,用“建对值”的设计是好的,为何后面会延伸那么多科目呢?很多复杂低效率的sql就是从不合理的表设计开始的!
相关文章
相关视频