用一条SQL语句查询出所有员工姓名的字母前三位
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了用一条SQL语句查询出所有员工姓名的字母前三位相关的知识,希望对你有一定的参考价值。
用一条SQL语句查询出所有员工姓名的字母前三位
sql中按姓名拼音排序select
isnull(b.py,upper(left(a.username,1)))
as
py
,a.username
from
(
select
'a3'
as
username
union
select
username
from
usertable
--修改这里的姓名列~
)
a
left
outer
join
(
select
'a'
as
py,n'骜'
as
word,
n'啊'
as
sword
union
select
'b',n'簿',n'骜'
union
select
'c',n'错',n'簿'
union
select
'd',n'鵽',n'错'
union
select
'e',n'樲',n'鵽'
union
select
'f',n'鳆',n'樲'
union
select
'g',n'腂',n'鳆'
union
select
'h',n'夻',n'腂'
union
select
'j',n'攈',n'夻'
union
select
'k',n'穒',n'攈'
union
select
'l',n'鱳',n'穒'
union
select
'm',n'旀',n'鱳'
union
select
'n',n'桛',n'旀'
union
select
'o',n'沤',n'桛'
union
select
'p',n'曝',n'沤'
union
select
'q',n'囕',n'曝'
union
select
'r',n'鶸',n'囕'
union
select
's',n'蜶',n'鶸'
union
select
't',n'箨',n'蜶'
union
select
'w',n'鹜',n'箨'
union
select
'x',n'鑂',n'鹜'
union
select
'y',n'韵',n'鑂'
union
select
'z',n'咗',n'韵'
)
b
on
left(username,1)
between
b.sword
and
b.word
where
username<>'a3'
and
py='a'
--这里的and
py='a'是查询以a拼音开头的姓名,你可以
改成其他的,或者直接去掉就是查询所有的~
order
by
py 参考技术A 方法一. left从左往右数
select left(员工姓名,3),员工姓名 from 员工
方法二. 截取字符
select substring(员工姓名,0,4),员工姓名from 员工本回答被提问者采纳 参考技术B 楼上2位已经综合了 ORACLE 和 SQL SERVER的 答案了,呵呵。 参考技术C oracle环境
select substr(员工姓名,1,3) from 员工; 参考技术D 员工姓名长啥样儿啊,是字母么?
用一条SQL语句查出每门课都大于80分的学生的姓名
用一条sql语句查询出所有课程都大于80分的学生名单:
name | cource | score |
张三 | 语文 | 81 |
张三 | 数学 | 75 |
李四 | 语文 | 76 |
李四 | 数学 | 90 |
王五 | 语文 | 81 |
王五 | 数学 | 100 |
王五 | 英语 | 90 |
1 SET FOREIGN_KEY_CHECKS=0; 2 3 -- ---------------------------- 4 -- Table structure for grade 5 -- ---------------------------- 6 DROP TABLE IF EXISTS `grade`; 7 CREATE TABLE `grade` ( 8 `name` varchar(255) NOT NULL, 9 `class` varchar(255) NOT NULL, 10 `score` tinyint(4) NOT NULL 11 ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4; 12 13 -- ---------------------------- 14 -- Records of grade 15 -- ---------------------------- 16 INSERT INTO `grade` VALUES (‘张三‘, ‘语文‘, ‘81‘); 17 INSERT INTO `grade` VALUES (‘张三‘, ‘数学‘, ‘75‘); 18 INSERT INTO `grade` VALUES (‘李四‘, ‘语文‘, ‘76‘); 19 INSERT INTO `grade` VALUES (‘李四‘, ‘数学‘, ‘90‘); 20 INSERT INTO `grade` VALUES (‘王五‘, ‘语文‘, ‘81‘); 21 INSERT INTO `grade` VALUES (‘王五‘, ‘数学‘, ‘100‘); 22 INSERT INTO `grade` VALUES (‘王五‘, ‘英语‘, ‘90‘); 23 SET FOREIGN_KEY_CHECKS=1;
查询每门课都大于80分的同学的姓名:
1 select distinct name from grade where name not in (select distinct name from grade where score<=80);
还有一种简单的写法:
1 select name from grade group by name having min(score)>80;
查询平均分大于80的学生名单:
1 select name from ( 2 select count(*) t, sum(score) num, name from grade group by name 3 ) as a where a.num>80*t;
也有一种简单的写法:
1 select name, avg(score) as sc from grade group by name having avg(score)>80;
以上是关于用一条SQL语句查询出所有员工姓名的字母前三位的主要内容,如果未能解决你的问题,请参考以下文章