如何根据MySQL表中2列的比较选择某些行

时间:2013-05-02 17:37:21

标签: mysql case

我有一张表格如下:

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

my my 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 equal倒钩上返回一个空行,我不希望返回该行。

由于

1 个答案:

答案 0 :(得分: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