3

请帮助解决以下问题。我有一个名为 time_schedule 的表。
我的要求是如果 start_city_name='somecity' 那么我需要选择离开时间
,否则我需要选择到达时间。这里我要选择哪一个。例如:

SELECT IF(start_city_name='somecity',departure_time,arrival_time) 
   FROM time_schedule;

这里如果条件匹配,则选择离开时间。然后我需要选择它作为离开时间。
否则,如果条件失败,则选择了到达时间,那么我需要选择结果作为到达时间。我正在使用 MySQL。提前致谢。

4

2 回答 2

9

要知道选择了哪一个,您可以执行以下操作:

SELECT IF(start_city_name='somecity', 'Departure time', 'Arrival time'),
       IF(start_city_name='somecity', departure_time, arrival_time)
FROM time_schedule;

你不能真的把它作为列名,如果有一行条件为真,一行条件为假,列名应该是什么?

但是,如果您愿意将它们分成 2 列:

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_timeNULLdeparture_timeNULL,条件为假时。

于 2013-09-17T07:35:26.217 回答
1

使用这样的CASE构造:

SELECT CASE start_city
         WHEN 'somecity' THEN departure_time
         ELSE arrival_time
       END AS column_alias
  FROM time_schedule;

谷歌获取CASE更多详细信息。这方面有很多资源。

于 2013-09-17T07:35:03.747 回答