Note:
学生在每个课中不应被重复计算。
insert into sources(student,class)
values ("A","Math"),("B","English"),("C","Math");
insert into sources set student="D",class="Biology"
select class
from (select class,count(distinct student) coun
from courses
group by class) as dd
where dd.coun>=5;
创建一个 salary表,如下所示,有m=男性 和 f=女性的值 。
交换所有的 f 和 m 值(例如,将所有 f 值更改为 m,反之亦然)。要求使用一个更新查询,并且没有中间临时表。
create table salary(id int unsigned not null primary key auto_increment,
name varchar(10),
sex varchar(2),
salary int)charset utf8;
insert into salary(name,
sex,
salary)
values ('A','f','2500'),
('B','m','1500'),
('C','f','5500'),
('D','m','500')
update salary
set sex=
case sex when 'f' then 'm'
when 'm' then 'f'
else ''
end ;
在数据库中创建表1和表2,并各插入三行数据(自己造)。编写一个 SQL 查询,满足条件:无论 person 是否有地址信息,都需要基于上述两表提供 person 的以下信息:FirstName, LastName, City, State。
select p.FirstName,
p.LastName,
a.City,
a.State
from Person as p
left join Address as a
on a.Personid=p.personid ;
编写一个 SQL 查询,来删除 email 表中所有重复的电子邮箱,重复的邮箱里只保留 Id 最小 的那个。
delete from email
where ID in (select *
from (select min(ID)
from email
group by Email
having count(Email)>1) as q);