不清楚mySql查询语法

时间:2011-11-19 09:23:48

标签: mysql

客户端要求我在SQL查询中执行一些更改,并向我发送他想要的查询。他通常在msSql上工作但是说它也适用于我正在使用的平台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

我不确定插入从select和join中获取正确的值,以及它如何知道输入哪个值。这个查询中发生了什么?在任何地方都没有VALUES,然后在插入中有更多选定的值...

此查询是否符合逻辑?

1 个答案:

答案 0 :(得分: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)