如何在 MySQL 表中选择特定范围的值?

Posted

技术标签:

【中文标题】如何在 MySQL 表中选择特定范围的值?【英文标题】:How to select particular range of values in MySQL table? 【发布时间】: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';

【问题讨论】:

Select rows with in particular range sql query的可能重复 我添加了一个年龄计算示例。 【参考方案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

【讨论】:

以上是关于如何在 MySQL 表中选择特定范围的值?的主要内容,如果未能解决你的问题,请参考以下文章

我在表单中使用了日期范围选择器如何禁用从 MySQL 数据库中获取的特定日期范围

MySQL:如何根据从另一个表中选择的值填充现有表的新列[关闭]

如何从特定小时范围内的行中选择最小值?

如何编写查询选择合理的权衡?

Mysql 中的 Index Scope 是如何工作的?

如何将对象中特定键的值存储到数组中 - Vue