2011-11-19 81 views
0

客戶端請求我在SQL查詢中執行一些更改併發送給我完全他想要的查詢。他通常在msSql上工作,但表示它也可以在我使用的平臺MySql上工作。不清楚mySql查詢語法

這是查詢:

INSERT INTO  Messages (Match, Message) 
SELECT   [Match], MM.Message 
FROM   MatchMessages AS MM 
INNER JOIN Matches AS M 
ON  MM.ActionBy=M.ActionBy 
AND  MM.Status=M.Status 

我不知道在哪裏插入從選擇獲取正確的價值觀和加入,以及它是如何知道在哪裏輸入的參數值。這個查詢中發生了什麼?沒有任何值和任何值有更多的選擇值,然後在插入目標...

此查詢看起來是否合乎邏輯?

回答

4

是 - 這是一個絕對正常的查詢......讓我們打破這:

第一部分

SELECT   [Match], MM.Message 
FROM   MatchMessages AS MM 
INNER JOIN Matches AS M 
ON  MM.ActionBy=M.ActionBy 
AND  MM.Status=M.Status 

這最先被執行並返回數據的0-n行...每行包含2列(匹配和消息)按這個特定的順序。如果你想要單獨執行它(就像它在這裏沒有INSERT部分一樣)。

第二部分

INSERT INTO  Messages (Match, Message) 

這部分被送入第一部分的結果(注意,這部分不知道,不從一個部分關心的列名,它只是動作的次序上列)...這意味着通過一個它

INSERT INTO Messages (Match, Message) VALUES (MatchFromPartOne, MessageFromPartOne) 
+0

感謝偉大的explination的等價物,所以,我有兩個問題,如果我可以部分返回的每一行:1在select查詢中, [匹配]被認爲是一個列名,但它是實際的盟友一個變量傳遞給函數。這是合乎邏輯的?和2 - 這個查詢可以將多行插入到消息中? Thanks1 – Yanipan

+0

@Yanipan 1 - 這可以是合理的,例如,從一個Match複製行到另一個... 2 - 從技術上講,這是可能的...取決於您的數據模型。 – Yahia