2013-03-22 106 views
4

以下是我的MySQL表。我想從我的表hello中選擇一個特定範圍的值。如何在MySQL表中選擇特定範圍的值?

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'; 
+0

可能重複(http://stackoverflow.com/questions/12794991/select-rows-with-in-particular-range-sql-query) – JNK 2013-03-22 15:44:44

+0

I」已經用年齡計算增加了一個例子。 – 2013-03-22 17:19:18

回答

13

您可以使用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,然後可以在需要時計算年齡。

11
SELECT name 
FROM hello 
WHERE age BETWEEN 20 AND 30 
    AND gender = 'm' 

不要存儲age。存儲日期字段並計算年齡。如果這個人長大了會發生什麼?

+1

我想檢查年齡和性別,而不是名稱。 – Ameer 2013-03-22 15:37:03

+1

@Ameer您的陳述讓您感到困惑,您希望'c'和'e' – Kermit 2013-03-22 15:44:56

+0

現在可以編輯... :) – Ameer 2013-03-22 16:04:02

0

SELECT * FROM hello WHERE age>=20 AND age <=30 AND gender='m';

0

因爲年齡從去年到今年改變你可以做到這一點。

設置表是這樣的:

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

的[選擇的行與在特定範圍內的SQL查詢]