6

以下は私の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';
4

4 に答える 4

18

句を使用しWHEREてデータをフィルタリングできます。

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

SQL FiddlewithDemoを参照してください

これは、次を使用して記述することもできますBETWEEN

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

SQL FiddlewithDemoを参照してください。

通常、人の代わりに生年月日を保存するage必要があります。その後、必要に応じて年齢を計算できます。

于 2013-03-22T15:24:29.730 に答える
13
SELECT name
FROM hello
WHERE age BETWEEN 20 AND 30
  AND gender = 'm'

保管しないでくださいage。日付フィールドを保存し、年齢を計算します。その人が年をとったらどうなりますか?

于 2013-03-22T15:25:09.260 に答える
0

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

于 2013-03-22T15:25:11.360 に答える
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

于 2013-03-22T16:40:20.993 に答える