返回信息流昨天酷讯的数据库题目,大意是
有一张ticket表,字段为flightid, from, to,分别是主键,出发地,终点。
A条件:from ="beijing"
B条件:to = "shanghai"
要求选择符合A和B条件的记录,且不能重复,且符合A条件(包括同时满足AB条件)的记录排在只符合B条件的记录之前。
请我版上大牛,这个SQL语言该怎么写
这是一条镜像帖。来源:北邮人论坛 / database / #4971同步于 2010/11/5
该镜像源已超过 30 天没有更新,可能在源站已被删除。
Database机器人发帖
问个数据库笔试题目
fifarcheung
2010/11/5镜像同步10 回复
订阅后,新回复会通过你的通知中心匿名送达。
9 条回复
select distinct flightid, from, to
from ticket
where from ='beijing' or to = 'shanghai'
order by from,to
select distinct flightid, from, to,
case
when from = 'beijing' and to = 'shanghai' then 0
when from = 'beijing' then 1
when to = 'shanghai' then 2
end
as sort
from ticket
where from ='beijing' or to = 'shanghai'
order by sort
【 在 fifarcheung (eber) 的大作中提到: 】
: 昨天酷讯的数据库题目,大意是
: 有一张ticket表,字段为flightid, from, to,分别是主键,出发地,终点。
: A条件:from ="beijing"
: ...................
不知道我这样可以不?
(
SELECT DISTINCT t1.flightid
FROM ticket AS t1
WHERE t1.from = 'Beijing'
ORDER BY t1.flightid ASC
)
UNION
(
SELECT DISTINCT t2.flightid
FROM ticket AS t2
WHERE t2.to = 'Shanghai'
ORDER BY t2.flightid ASC
)
【 在 Orpine 的大作中提到: 】
: select distinct flightid, from, to,
: case
: when from = 'beijing' and to = 'shanghai' then 0
: ...................
【 在 newtj 的大作中提到: 】
: select distinct flightid, from, to
: from ticket
: where from ='beijing' or to = 'shanghai'
: ...................
这样不对,题目要求from中有北京的优先。
按这条Sql,如果to中含有Shanghai但是from为Aba,这条记录就比from=Beijing更优先了
完整原题是这样的:
有一个表格为ticket,有三个字段,分别为flightid(航班)、from(出发城市)、to(到达城市),原始记录中午重复记录,如下表示例:
flight | from | to
CA1234 | Beijing | Guangzhou
FM9876 | Aba | Shanghai
FM9888 | Beijing | Shanghai
CA8877 | Wuhan | Guangzhou
要求查询出发城市为“Beijing”(条件A)、或者到达城市(条件B)的所有记录的flightid。并对结果进行排序,要求将满足条件A(以及同时满足A和B)的记录排在只满足条件B的记录之前,并去除重复。
例如本例中结果为:
flight |
CA1234 |
CA1234 |
FM9876 |
求查询语句(注意返回结果的顺序)
ls你写错啦~重复啦,原题目给的是不重复的
例如本例中结果为:
flight |
CA1234 |
FM9886 |
FM9876 |
大概是这个样子,关键字from会出错不?
我之前的答案可以不?
【 在 littlemonk 的大作中提到: 】
: 完整原题是这样的:
: 有一个表格为ticket,有三个字段,分别为flightid(航班)、from(出发城市)、to(到达城市),原始记录中午重复记录,如下表示例:
:
: ...................
【 在 hitlerliu 的大作中提到: 】
: ls你写错啦~重复啦,原题目给的是不重复的
: 例如本例中结果为:
: flight |
: ...................
from 啊,居然笔试时还考查这个关键字,那就要加上单引号了。union行不行的,flight有没有可能会出现两次。
不好意思,之前编辑时copy错了
flight | from | to
CA1234 | Beijing | Guangzhou
FM9876 | Aba | Shanghai
CA1234 | Beijing | Shanghai
CA8877 | Wuhan | Guangzhou
UNION的话会过滤重复的
UNION ALL的话会保留重复的
【 在 littlemonk 的大作中提到: 】
:
: 【 在 hitlerliu 的大作中提到: 】
: : ls你写错啦~重复啦,原题目给的是不重复的
: ...................