至少有一个百家姓的表 然后关联起来 GROUP BY 百家姓的表可以这样建立ID NAME 1 赵 2 钱 3 孙 。。然后在你现在的表里面记录ID
百家姓表记录好之后,要怎么在现在的表记录ID呢? 即现在的表是 姓 + 名,怎么把百家姓表的ID相应地设置到当前表? 要用到 NAME LIKE '姓%' 作条件么?
百家姓表记录好之后,要怎么在现在的表记录ID呢? 即现在的表是 姓 + 名,怎么把百家姓表的ID相应地设置到当前表? 要用到 NAME LIKE '姓%' 作条件么?也只能是这样了--不考虑特殊情况 SELECT T2.姓,SUM(1) FROM 人员表 T1 LEFT JOIN 百家姓 T2 ON T1.NAME LIKE T2.姓+'%' GROUP BY T2.姓 --考虑特殊情况 SELECT T2.姓,SUM(1) FROM 人员表 T1 OUTER APPLY(SELECT TOP 1 姓 FROM 百家姓 WHERE T1.NAME LIKE 姓+'%')T2 GROUP BY T2.姓
select count(*) from 人员表 where name like '陈%' 额 表示我只会这个。
select count(*) from 人员表 where name like '陈%' 额 表示我只会这个。 --------------------------------------- 这样是不行的,比如说欧和欧阳 而且难不成你还针对某个姓执行一次查询create table t1_person ( aid int identity(1,1) unique, ps_name nvarchar(50), ps_fname nvarchar(5), )go create table t1_personf_fname ( aid int identity(1,1), ps_fname nvarchar(5) primary key, ps_count smallint )insert into t1_person(ps_name,ps_fname) select '张辽','张' union select '张虎','张' union select '欧阳','欧' union select '欧阳锋','欧阳'
insert into t1_personf_fname(ps_fname,ps_count) select '吕',0 union select '张',0 union select '欧',0 union select '欧阳',0
update t1_personf_fname set ps_count=a2.fcount from t1_personf_fname a1 inner join (select ps_fname,COUNT(aid) as fcount from t1_person group by ps_fname ) a2 on a1.ps_fname=a2.ps_fname
百家姓的表可以这样建立ID NAME
1 赵
2 钱
3 孙
。。然后在你现在的表里面记录ID
即现在的表是 姓 + 名,怎么把百家姓表的ID相应地设置到当前表?
要用到 NAME LIKE '姓%' 作条件么?
即现在的表是 姓 + 名,怎么把百家姓表的ID相应地设置到当前表?
要用到 NAME LIKE '姓%' 作条件么?也只能是这样了--不考虑特殊情况
SELECT T2.姓,SUM(1) FROM 人员表 T1
LEFT JOIN 百家姓 T2 ON T1.NAME LIKE T2.姓+'%'
GROUP BY T2.姓
--考虑特殊情况
SELECT T2.姓,SUM(1) FROM 人员表 T1
OUTER APPLY(SELECT TOP 1 姓 FROM 百家姓 WHERE T1.NAME LIKE 姓+'%')T2
GROUP BY T2.姓
from 人员表
where name like '陈%'
额 表示我只会这个。
from 人员表
where name like '陈%'
额 表示我只会这个。
---------------------------------------
这样是不行的,比如说欧和欧阳
而且难不成你还针对某个姓执行一次查询create table t1_person
( aid int identity(1,1) unique,
ps_name nvarchar(50),
ps_fname nvarchar(5),
)go
create table t1_personf_fname
( aid int identity(1,1),
ps_fname nvarchar(5) primary key,
ps_count smallint
)insert into t1_person(ps_name,ps_fname)
select '张辽','张' union
select '张虎','张' union
select '欧阳','欧' union
select '欧阳锋','欧阳'
insert into t1_personf_fname(ps_fname,ps_count)
select '吕',0 union
select '张',0 union
select '欧',0 union
select '欧阳',0
update t1_personf_fname set ps_count=a2.fcount
from t1_personf_fname a1
inner join (select ps_fname,COUNT(aid) as fcount
from t1_person
group by ps_fname
) a2 on a1.ps_fname=a2.ps_fname
select * from t1_personf_fname