2

これを達成するための最も効率的な方法を理解したいと思います。

誕生日(YYYY / MM / DD)を含むユーザー情報を含むMySQLテーブルがあります。私の目的は、10歳から60歳までの個々の年齢のユーザーの合計を含む配列(php)を取得することです。すべてのユーザーにクエリを実行し、誕生日を誕生日に渡して、作成したphp関数を使用して、配列に合計を入力するだけです。しかし、私のためにこの仕事をするSQLクエリを構築する方法があるのだろうか?

4

3 に答える 3

2

行をグループ化できるはずです。

SELECT
    FLOOR(DATEDIFF(NOW(), `birthday`)/365) AS 'Age',
    COUNT(*)
FROM `users`
WHERE FLOOR(DATEDIFF(NOW(), `birthday`)/365) BETWEEN 10 AND 60
AND `id` IN (1, 3, 5, 12, 29)
GROUP BY FLOOR(DATEDIFF(NOW(), `birthday`)/365)
ORDER BY FLOOR(DATEDIFF(NOW(), `birthday`)/365) ASC

結果にはユーザーがいない年齢は含まれませんが、なぜそれが必要になるのかわかりません。

更新 -IDフィルターを追加しました-日付の計算を修正しました(おっと!)-新しい列に名前を付けました

于 2013-01-19T23:26:40.550 に答える
0
SELECT * FROM tableName 
         WHERE dateOfBirth >= (CURRENT_DATE - INTERVAL 60 YEAR)   
         AND dateOfBirth <= ( CURRENT_DATE - INTERVAL 10 YEAR )

うまくいけば、私はこれについてデータベースの専門家に非難されないでください...

于 2013-01-19T23:21:49.813 に答える
-1

MySqlのDATEDIFF()を使用する必要があります。

SELECT USER, DATEOFBIRTH FROM USERTABLE WHERE DATEDIFF(DATEOFBIRTH,NOW()) < 60;
于 2013-01-19T23:19:31.657 に答える