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

标签 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

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

谢谢

最佳答案

您可以包含一个 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

关于mysql - 如何根据 MySQL 表中 2 列的比较来选择某些行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16344317/

相关文章:

tsql - T-SQL 语法问题 - 在 CASE 语句中使用 OR

mysql - 获取最后插入的mysql行的id

MySQL 查询返回多个求和和分组列

mysql - 查询以查找最接近的较小日期

postgresql - 我如何在 Postgresql 的 case select 中使用 like 运算符?

ruby - 如果没有给出正确答案,请重复案例

php - 具有多个可变帖子 ID 的 WordPress 查询

mysql - nodejs X DevApi 添加返回 id

mysql - 如何在时间戳字段中搜索日期?

mysql - GWT - 显示的时间比数据库中存储的时间晚 1 小时