0

ユーザーテーブルと目標テーブルがあります。ユーザーは目標を入力できます。各テーブルには、INT自動インクリメントされる主キーがあります。ここで、ユーザーの目標IDを表すフィールドを目標テーブルに追加しINTて、UserAが5つの目標を入力した場合、この新しいフィールドに1から5までの値が含まれるようにします。UserB..UserNについても同じことが言えます。これをMySQL側だけで行うことはできますか、それとも次の番号を決定するためにPHPコードで事前にデータを引き出す必要がありますか。

4

1 に答える 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 に答える