如果mysql中的条件选择语句

时间:2013-09-17 07:31:11

标签: mysql select if-statement

请帮助解决以下问题。我的表叫做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。在此先感谢。

2 个答案:

答案 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_timeNULL,条件为假时departure_timeNULL除外。

答案 1 :(得分:1)

使用CASE这样的结构:

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

Google提供CASE语句了解更多详情。这方面有很多资源。