Table 1
ID MONTH1 NUM NUM2
XO3 4 0
XO1 DEC 1 1
XO1 JAN 1 2
XO2 DEC 3 3
XO2 JAN 3 4
Table 2
ID MONTH1 NUM
XO3
XO1 DEC
XO1 JAN
XO2 JAN
1>
UPDATE Table1
INNER JOIN TABLE2 ON Table1.ID = TABLE2.ID
SET TABLE2.NUM = [Table1].[NUM]
WHERE (((TABLE2.MONTH1)=Table1.MONTH1) And ((TABLE2.ID)=Table1.ID));
2 - ;
UPDATE Table2
INNER JOIN Table1 ON (Table2.MONTH1 = Table1.MONTH1) AND (Table2.ID = Table1.ID)
SET Table2.NUM = [Table1].[NUM];
3>
Now
Table 2 shows
ID MONTH1 NUM
XO3
XO1 DEC 1
XO1 JAN 1
XO2 JAN 3
所以我的问题是1>之间的区别是什么?和2>查询作为两个查询之一给我3> ,如果我运行1>查询然后我得到3>作为答案,因为表格将更新的列NUM显示为1,2,3或 如果我运行第二个查询2>它再次将更新的列NUM显示为1,2,3
请告诉我差异,谢谢你。
答案 0 :(得分:1)
查询是等价的..区别仅在于连接条件
在第一个中,连接条件部分在on子句中,其余部分在
中 ON Table1.ID = TABLE2.ID
WHERE (((TABLE2.MONTH1)=Table1.MONTH1) And ((TABLE2.ID)=Table1.ID));
在第二个连接只在on子句
ON (Table2.MONTH1 = Table1.MONTH1) AND (Table2.ID = Table1.ID)
然后它们是相同的
答案 1 :(得分:0)
是的,两个查询产生相同的结果然后有什么区别?对,让我们看看
查询
UPDATE Table1
INNER JOIN TABLE2 ON Table1.ID = TABLE2.ID
SET TABLE2.NUM = [Table1].[NUM]
WHERE (((TABLE2.MONTH1)=Table1.MONTH1) And ((TABLE2.ID)=Table1.ID));
在此查询中,您将从两个表中获取所有匹配的记录(Table1.ID = TABLE2.ID
),然后应用此类过滤条件
WHERE (((TABLE2.MONTH1)=Table1.MONTH1) And ((TABLE2.ID)=Table1.ID))
然后对最终结果执行更新操作。
查询
UPDATE Table2
INNER JOIN Table1 ON (Table2.MONTH1 = Table1.MONTH1) AND (Table2.ID = Table1.ID)
SET Table2.NUM = [Table1].[NUM];
在此查询中,您将使用匹配条件(例如(Table2.MONTH1 = Table1.MONTH1) AND (Table2.ID = Table1.ID)
因此,这样可以在获取记录时提高效率,因为不需要额外的工作来过滤记录,从而获得更好的性能。