0

我有一张如下表:

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

谢谢

4

1 回答 1

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

或者,如果年龄匹配,您可以包含一个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

于 2013-05-02T17:39:41.743 回答