请帮助解决以下问题。我的表叫做time_schedule
我的要求是如果start_city_name ='somecity'那么我需要选择departure_time
否则我需要选择arrival_time。在这里,我想要选择哪一个。例如:
SELECT IF(start_city_name='somecity',departure_time,arrival_time)
FROM time_schedule;
如果条件匹配,则选择departure_time。然后我需要选择它作为departure_time 否则,如果条件失败,则选择arrival_time,然后我需要选择结果作为arrival_time。我正在使用MySQL。在此先感谢。
答案 0 :(得分:9)
要知道选择了哪一个,你可以这样做:
SELECT IF(start_city_name='somecity', 'Departure time', 'Arrival time'),
IF(start_city_name='somecity', departure_time, arrival_time)
FROM time_schedule;
你真的不能把它作为列名,如果有一行条件为真,一条条件为假,列名应该是什么呢?
但是,如果您乐意将它们分成两列:
SELECT IF(start_city_name='somecity', NULL, arrival_time) AS 'Arrival time',
IF(start_city_name='somecity', departure_time, NULL) AS 'Departure time'
FROM time_schedule;
这与简单地说:
SELECT arrival_time, departure_time
FROM time_schedule;
条件为真时arrival_time
为NULL
,条件为假时departure_time
为NULL
除外。
答案 1 :(得分:1)
使用CASE
这样的结构:
SELECT CASE start_city
WHEN 'somecity' THEN departure_time
ELSE arrival_time
END AS column_alias
FROM time_schedule;
Google提供CASE
语句了解更多详情。这方面有很多资源。