ユーザーテーブルと目標テーブルがあります。ユーザーは目標を入力できます。各テーブルには、INT
自動インクリメントされる主キーがあります。ここで、ユーザーの目標IDを表すフィールドを目標テーブルに追加しINT
て、UserAが5つの目標を入力した場合、この新しいフィールドに1から5までの値が含まれるようにします。UserB..UserNについても同じことが言えます。これをMySQL側だけで行うことはできますか、それとも次の番号を決定するためにPHPコードで事前にデータを引き出す必要がありますか。
質問する
80 次
1 に答える
0
このようなクエリはどうですか?
INSERT INTO goals(col1, col2, col3, user_goal_id)
SELECT :val1, :val2, :val3, MAX(user_goal_id)+1
FROM goals
WHERE user_id = :user_id
GROUP BY user_id
?これが最も簡単な方法だと思います...
または、これも機能する可能性があります。
INSERT INTO goals(col1, col2, col3, user_goal_id)
SELECT :val1, :val2, :val3, user_goal_id+1
FROM goals
WHERE user_id = :user_id
ORDER BY user_goal_id DESC
LIMIT 1
または、TRIGGERまたはいくつかの関数を作成できます...
于 2012-12-12T15:10:08.123 に答える