2015-01-11 35 views
0

假設我有一個表結構象下面這樣:MySQL的具有固定值和多個選擇結果數據插入

notification_table

| id | receiver_id | type | content | time | 

接收機ID是從用戶表:

user_table

| id | username | 

和內容和時間是從廣播臺:

broadcast_table

| id | content | time | 

所以,當我需要插入此通知表,我需要從用戶和選擇內容+時間選擇ID來自廣播,並且類型被固定爲「system_broadcast」。我可以在一個查詢中做到這一點嗎?

我試圖

INSERT INTO notification_table (receiver_id, type, content, time) 
VALUES (
     (SELECT id FROM user_table WHERE username='test' LIMIT 1), 
     'system_broadcast', 
     (SELECT content, time FROM broadcast_table) 
) 

但它返回類似錯誤 「MySQL的操作數應包含1列(S)」。

回答

2

是的,你可以使用insert . . . select來做到這一點。這似乎使其與原始查詢目的:

INSERT INTO notification_table (receiver_id, type, content, time) 
    SELECT (SELECT id FROM user_table WHERE username = 'test' LIMIT 1), 
      'system_broadcast', 
      content, time 
    FROM broadcast_table; 

注意,這將在插入一行的每一行。您可能希望where子句或limit僅獲取特定行。

+0

是的,它的工作原理。我確實有我可以處理自己的限制條件條款。謝謝。 – mrmoment