昨晚参加某大型网上商城的校招笔试题,大家来讨论讨论
昨晚参加的某商城笔试题,先来看看SQL的题
第一题:
假设某商品表为 tabletest ,使用一条SQL语句查询出所有字段为 shop_id 取值重复的记录
第二题:
假设某商品表 tabletest中 price字段表示价格, promote_price字段表示促销时期价格,请用一条SQL 语句实现,当前月份为 6月时, 使用promote_price字段代替 price字段
大家谈谈自己的答案?
我的答案:
create table jd_test ( shop_id int not null, price int not null, promote_price int not null ) insert into jd_test values(1,100,90), (2,110,100), (2,90,80), (3,120,90), (3,150,90), (4,40,39) --使用子查询 查询出所有 shop_id数量>1的(即表示有重复),然后再选择出该重复shop_id的所有信息 select * from jd_test where shop_id in ( select shop_id from jd_test group by shop_id having count(shop_id) > 1) --使用 update 语句 和 case 语句更新 price 价格 UPDATE jd_test SET price = CASE WHEN DATEPART(MONTH,GETDATE()) = 6 THEN promote_price ELSE price END
顺便说说 DATEPART() 函数的使用: 分别取出年月日
SELECT DATEPART(YEAR,GETDATE()) AS yaar, DATEPART(MONTH,GETDATE()) as month, DATEPART(DAY,GETDATE()) as day
结果:
还有其他题,待会儿再放出来讨论!