私はユーザの誕生日(YYYY-MM-DD)のユーザテーブルと、年齢のを持っています。私はとを計算するためのスクリプトを実行して、年齢の列を夜間にcronで更新したいと考えています。MySQLの更新年齢の列
このSQLは、年齢を選択し、計算に適しています:
SELECT
DATE_FORMAT(NOW(), '%Y') -
DATE_FORMAT(`birthday`, '%Y') -
(DATE_FORMAT(NOW(), '00-%m-%d') < DATE_FORMAT(`birthday`, '00-%m-%d')) AS age
FROM
`jos_jcourse_students`
をしかし、それは1つのステートメントで更新年齢欄に可能ですか?次のことを試してみましたが、私がやったのは年齢の列にすべての0を入力することでした!何らかの種類のMySQLループを使用する必要がありますか?
UPDATE
`jos_jcourse_students`
SET
age = "SELECT DATE_FORMAT(NOW(), '%Y') -
DATE_FORMAT(`birthday`, '%Y') -
(DATE_FORMAT(NOW(), '00-%m-%d') < DATE_FORMAT(`birthday`, '00-%m-%d')) AS age
FROM
`jos_jcourse_students`"
の主キーですか? –
ここで年齢の列は重複しているようです。あなたはそれを完全に取り除くことができず、必要に応じて年齢を計算することができなかった理由は何ですか?それは計算の複雑さのようにそうではありません::) – cHao
ええ、それを取り除くことができたかもしれませんが、すでにそのようにプログラムされているので、DB構造を変更したくない;) – lee