【问题标题】:How to select particular range of values in MySQL table?如何在 MySQL 表中选择特定范围的值?
【发布时间】:2013-03-22 15:22:38
【问题描述】:

以下是我的 MySQL 表。我想从我的表 hello 中选择特定范围的值。

name      age        job       gender

A         33         dgfd      m
b         44         gdfg      f
c         21         jhkh      m
e         23         etertr    m

我如何选择年龄在 20-30 岁之间的男性。

SELECT hello.*
WHERE hello.age='20-30' AND hello.gender='m';

【问题讨论】:

标签: mysql sql select


【解决方案1】:

您可以使用WHERE 子句过滤数据:

select name, age, job, gender
from hello
where age >=20
  and age <=30
  and gender = 'm'

SQL Fiddle with Demo

这也可以写成BETWEEN:

select name, age, job, gender
from hello
where age between 20 and 30
  and gender = 'm'

SQL Fiddle with Demo

通常您会希望存储出生日期而不是个人的age,然后可以在需要时计算年龄。

【讨论】:

    【解决方案2】:
    SELECT name
    FROM hello
    WHERE age BETWEEN 20 AND 30
      AND gender = 'm'
    

    不要存储age。存储日期字段并计算年龄。如果这个人变老了会怎样?

    【讨论】:

    • 我想检查年龄和性别,而不是姓名。
    • @Ameer 对你想要ce 的声明感到困惑
    • @Ameer 如果您的问题要求发生变化,请提出新问题。
    • 我已经包含了一个带有日期的示例来显示年龄计算,因此它会根据每年的年龄变化进行调整。
    【解决方案3】:

    SELECT * FROM hello WHERE age&gt;=20 AND age &lt;=30 AND gender='m';

    【讨论】:

      【解决方案4】:

      因为年龄每年都在变化,所以您可以这样做。

      这样设置表格:

      delimiter $$
      
      CREATE TABLE `hello` (
        `name` varchar(45) NOT NULL,
        `birthdate` date DEFAULT NULL,
        `job` varchar(45) DEFAULT NULL,
        `gender` enum('m','f') DEFAULT NULL,
        PRIMARY KEY (`name`)
      ) ENGINE=MyISAM DEFAULT CHARSET=utf8$$
      

      我正在使用的值:

      'A', '1980-08-04', 'clerk', 'm'
      'B', '1969-10-12', 'waitress', 'f'
      'C', '1992-09-16', 'pilot', 'm'
      'd', '1991-02-21', 'unemployed', 'm'
      

      SQL 查询:

      select name,TIMESTAMPDIFF(YEAR,birthdate,current_date) as age,job,gender from hello where birthdate > current_date - interval 30 YEAR and birthdate < current_date - interval 20 year;
      

      返回的查询答案

      name    age     job          gender
      C       20      pilot        m
      d       22      unemployed   m
      

      在此处添加到 SQLFiddle。 http://www.sqlfiddle.com/#!2/0143c/1/0

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2019-04-22
        • 1970-01-01
        • 2013-07-07
        相关资源
        最近更新 更多