1

ユーザーテーブルを調べようとしていますが、ランク列が特定の値である場合、メッセージテーブルに行を挿入します。1つの列「to」はユーザーテーブルのユーザー名列であり、挿入された行の残りの列は、事前定義された値である必要があります。私はこの仕事をするのに苦労しています-何か助けはありますか?

MySQL構成:(必要なもの)

ユーザーテーブル:

id|username|rank

メッセージテーブル:

id|to|from|body|subject

(テーブルtoからのものである必要があり、、、および事前定義された文字列である必要がありますusersfrombodysubject

私はこのようなことを理解しようとしましたが、それだけではありません。私はこのコードを入手し、これに類似した別のStackOverflowの質問から変更しました。

INSERT INTO `messages` (`from`,`to`,`subject`,`body`)  
SELECT `id`,`rank`
  FROM `users`
 WHERE `rank`='Super'
4

1 に答える 1

3

単一引用符で囲まれた文字列リテラルを列の値として使用できます。ステートメントのSELECT一部によって返される行の実際の列値とそれらを混在させても安全です。INSERT INTO...SELECT

INSERT INTO `messages` (`from`, `to`, `subject`, `body)
  SELECT 
   /* single-quote string literals to use them in the INSERT INTO...SELECT */
   'Predefined string From',
   /* Intermixed with column values from the rows returned by the SELECT */
   `username`,
   'Predefined string subject',
   'Predefined string body'
  FROM `users`
  WHERE `rank`='Super'
于 2012-11-21T00:56:55.797 に答える