2013-05-02 54 views
0

2列的比較某些行我有一個表,如下所示:如何選擇基於在MySQL表

id male female m_age f_age 
1 bob jane 27 25 
2 sam sue 29 31 
3 fred barb 22 22 
4 dave joan 30 28 

我只想回到誰是年長的人的名字。結果:

bob 
sue 
dave 

我可能mysql查詢看起來像這樣做?

這是我到目前爲止。

$result = mysql_query(' 
    SELECT 
     CASE 
      WHEN m_age > f_age then male 
      WHEN m_age < f_age then female 
     END 
     AS person 
    FROM people 
') or die(mysql_error()); 

但我的查詢返回fred等於倒鉤上的空行,我不希望該行返回。

感謝

回答

3

可以包括WHERE子句排除行時的年齡是相同的:

SELECT 
    CASE 
    WHEN m_age > f_age then male 
    WHEN m_age < f_age then female 
    END AS person 
FROM people 
where m_age <> f_age 

SQL Fiddle with Demo

或者你可以包括一個值來返回ELSE如果年齡匹配:

SELECT 
    CASE 
    WHEN m_age > f_age then male 
    WHEN m_age < f_age then female 
    ELSE 'Ages match' 
    END AS person 
FROM people; 

SQL Fiddle with Demo

+0

啊,聰明......謝謝@bluefeet。我的想法集中在CASE內部,我甚至沒有想到在盒子外面:) – 2013-05-02 17:41:05

+0

@ H.Ferrence'null'來自'CASE'的'else'部分,因爲你排除它,你得到'null '。 :) – Taryn 2013-05-02 17:42:05

+0

我把這個添加到我的腳本,它的工作完美。當我允許我的時候,我會接受這個答案 – 2013-05-02 17:42:22