> 백엔드 개발 > PHP 튜토리얼 > 如何样查找同一姓名的数据

如何样查找同一姓名的数据

WBOY
풀어 주다: 2016-06-13 12:05:45
원래의
1190명이 탐색했습니다.

怎么样查找同一姓名的数据?
表A
id     name      kemu
1        张龙    作文
2        张龙    数学
3        李四    作文
5        王五    作文
6        赵虎    数学
7        赵虎    口才
8        赵虎    珠心算

请问怎么用SQL语句查找出张三和赵虎


 多科


点击上面的搜索后显示为:
1      张龙
2      赵虎
------解决方案--------------------
drop table A;<br /><br />create table A (<br />  id int,<br />  name varchar(10),<br />  kemu1 varchar(10)<br />) charset=gbk;<br /><br />set names gbk;<br /><br />insert into A values<br />  (1, '张龙', '珠心算'),<br />  (2, '张龙', '口才'),<br />  (3, '赵虎', '珠心算'),<br />  (4, '赵虎', '作文'),<br />  (5, '王朝', '数学'),<br />  (6, '王朝', '数学'),<br />  (7, '马汉', '绘画');<br /><br />select DISTINCT A.name<br />  from A,<br />    (select name, group_concat(kemu1 order by kemu1) as klist from A group by name HAVING count(DISTINCT kemu1)>1) B<br />  where find_in_set(A.kemu1, B.klist)
로그인 후 복사
name
张龙
赵虎

------解决方案--------------------
<br />SELECT name FROM t_xuanke<br />WHERE id in( SELECT id FROM t_xuanke GROUP BY name,kemu1 HAVING count(*)<=1 )<br />GROUP BY `name`<br />HAVING COUNT(*)>1<br />
로그인 후 복사

1.先去掉相同名字,科目1也相同的记录
2.找出多个name的记录

lz,你这张表原本是想储存学生的选课情况,用“建对值”的设计是好的,为何后面会延伸那么多科目呢?很多复杂低效率的sql就是从不合理的表设计开始的!
관련 라벨:
원천:php.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿