怎麼樣尋找同一姓名的資料?
表A
id name kemu
1 張龍 作文
2 張龍 數學
3 李四 作文
5 王五 作文
6 趙虎 數學
7 趙虎 口才
8 趙虎 珠心算
請問怎麼用SQL語句尋找出張三和趙虎
點擊上面的搜尋後顯示為:
1 張龍
2 趙虎
------解決方案--------------------
drop table A;
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)
name
張龍
趙虎
------解決方案--------------------
SELECT name FROM t_xuanke
WHERE id in( SELECT id FROM t_xuanke GROUP BY name,kemu1 HAVING count(*)<=1 )
GROUP BY `name`
HAVING COUNT(*)>1
1.先去掉相同名字,科目1也相同的記錄
2.找出多個name的記錄
lz,你這張表原本是想儲存學生的選課情況,用“建對值”的設計是好的,為何後面會延伸那麼多科目呢?很多複雜低效率的sql就是從不合理的表設計開始的!