これを達成するための最も効率的な方法を理解したいと思います。
誕生日(YYYY / MM / DD)を含むユーザー情報を含むMySQLテーブルがあります。私の目的は、10歳から60歳までの個々の年齢のユーザーの合計を含む配列(php)を取得することです。すべてのユーザーにクエリを実行し、誕生日を誕生日に渡して、作成したphp関数を使用して、配列に合計を入力するだけです。しかし、私のためにこの仕事をするSQLクエリを構築する方法があるのだろうか?
行をグループ化できるはずです。
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フィルターを追加しました-日付の計算を修正しました(おっと!)-新しい列に名前を付けました
SELECT * FROM tableName
WHERE dateOfBirth >= (CURRENT_DATE - INTERVAL 60 YEAR)
AND dateOfBirth <= ( CURRENT_DATE - INTERVAL 10 YEAR )
うまくいけば、私はこれについてデータベースの専門家に非難されないでください...
MySqlのDATEDIFF()を使用する必要があります。
SELECT USER, DATEOFBIRTH FROM USERTABLE WHERE DATEDIFF(DATEOFBIRTH,NOW()) < 60;