本帖最后由 BaronZ 于 2012-11-27 19:47:56 编辑 问两条语句,题目如下:
1.Employees表
字段:1.id 2.name 3.salary 4.department_id
2.Department表
字段:1.department_id 2.department_name
问题
1.把名字为"a"的工资(salary)提升10.5%
2.求出department_id为30的department_name和员工的数量
------最佳解决方案--------------------
--问题一
update employees
set salary=salary*10.5% where
name='a'
--问题二
select depart_name,COUNT(id)as 员工数量 from
department d
where d.department_id=30 join employees e on
d.department_id=e.department_id
------其他解决方案--------------------
这个不用太在意,但是有这样的理论,count(*)需要检查列数,而你希望的只是行数,所以*号往往会带来一定的开销,但是实际用处的时候其实感觉不出来,而1,其实只是true的意思,你可以count(2)、count(3),意思就是统一一行,而不需要管它有多少列。我个人比较喜欢用,绝大部分情况下不需要在乎这个,但是在外联结:left/right join的时候,由于存在null值,所以此时要注意,有可能你要count(某一列),而不是*或者1
------其他解决方案--------------------
UPDATE employees
SET salary = salary * 1.105
WHERE NAME = 'a'
SELECT departmentname ,
COUNT(b.id) 员工数量
FROM department a
INNER JOIN Employees b ON a.department_id = B.department_id
WHERE department_id = 30
GROUP BY departmentname
------其他解决方案--------------------
full join 是left join 和right join的融合。不一样的。
------其他解决方案--------------------
update from 表 set salary=salary*1.105 where name='a'
select department_name from 表 where department_id=30
------其他解决方案--------------------
这个应该这样写吧
update employees
set salary=salary*1.105 where
name='a'
------其他解决方案--------------------