2012-06-29 73 views
0

我在加入Access时遇到了问题,当连接两个表时其中一个连接列是varchar而另一个是guid类型。MS Access - 加入GUID和字符串列

生成的SQL语句如下所示:

INSERT INTO adnVFD 
SELECT dbo_adnVFD.* 
FROM PRC INNER JOIN dbo_adnVFD ON PRC.PrcId = dbo_adnVFD.VarType; 

我尝试使用StringFromGUID功能的PRC.PrcId列转换,这样既列应是同一类型的。但没有成功。

有关如何解决此问题的任何想法?

回答

1

如何使用派生表,例如:

SELECT b.* 
FROM Table2 b 
INNER JOIN (SELECT StringFromGUID([ID]) As Expr1 FROM Table1) a 
ON b.Expr1=a.Expr1 
+0

好主意,我试过,但没有成功... – Marc

+0

我测试我张贴之前。你的表都是MS Access吗? – Fionnuala

+0

不,实际上我是通过链接表的帮助从SQL服务器导入行。我链接来自SQL服务器的几个表。在第一个查询中,我添加了一个where子句,而对于随后的查询,我只需加入(未链接)表以仅选择相关数据。 – Marc

0

如果我

(1)创建有两个字段的新表 - (一)ID, set as an autonumber, field size replication ID(又称GUID),和(b)ID2, text(255)

(2)添加一行,让它创建自动编号,并复制和粘贴,从ID为ID2

(3)SELECT Table1.ID, Table1.ID2 FROM Table1 where ID = ID2

我找回我行。请注意,粘贴的字符串包含大括号。您可能想确保比较不会以某种方式降低它们。

我然后创建第二个表,有两个文本字段,这两个文本(255),并加入了:

SELECT Table1.ID, Table1.ID2, Table2.Field1 
FROM Table1 INNER JOIN Table2 ON Table1.ID = Table2.ID; 

后就正常了,并把我带回我行。我的钱在你的情况下失去了大括号。 我根本不需要使用StringFromGUID()