SQL Server:在uniqueidentifier上加入
技术问答
239 人阅读
|
0 人回复
|
2023-09-12
|
我有两张桌子Backup和Requests。8 X' F: C8 j- q$ D' a6 Z
以下是两个表的脚本
& c- f3 ^# q& i后备# R0 ~. F1 p( d! r3 Q7 p! t* q
CREATE TABLE UserBackup( FileName varchar(70) NOT NULL, )文件名由GUID说。有时还有其他与文件相关的信息。因此,我们在表中输入类似的信息guid_ADD的条目。0 V9 o5 `. a! t1 K
要求
1 s) H6 m1 w* F! NCREATE TABLE Requests( RequestId UNIQUEIDENTIFIER NOT NULL, Status int Not null )以下是一些例行:6 ~! s! x+ m; t& h1 ^) F
UserBackup 表:8 \: J* L4 x# O& x4 r
FileName15b993cc-e8be-405d-bb9f-0c58b66dcdfe 4cffe724-3f68-4710-b785-30afde5d52f8 4cffe724-3f68-4710-b785-30afde5d52f8_Add7ad22838-ddee-4043-8d1f-6656d2953545请求 表:
; R4 M0 O5 P6 W+ {* i. vRequestId Status15b993cc-e8be-405d-bb9f-0c58b66dcdfe 14cffe724-3f68-4710-b785-30afde5d52f8 17ad22838-ddee-4043-8d1f-6656d2953545 2我需要从userbackup表返回所有行,表的名称(GUID)匹配表中的名称RequestId,Requests状态为1。所以这是我写的查询。5 r4 x6 M" D3 {4 z5 }4 ?7 \
Select * from UserBackupinner join Requests on UserBackup.FileName = Requests.RequestIdwhere Requests.Status = 1而且很好。它给了我以下结果。% G8 o9 j3 K& F8 u. O- u7 z
FileName RequestId Status15b993cc-e8be-405d-bb9f-0c58b66dcdfe b993cc-e8be-405d-bb9f-0c58b66dcdfe 14cffe724-3f68-4710-b785-30afde5d52f8 4cffe724-3f68-4710-b785-30afde5d52f8 14cffe724-3f68-4710-b785-30afde5d52f8_Add 4cffe724-3f68-4710-b785-30afde5d52f8 1这就是我想要的。但我不明白它是如何工作的。如果你注意到结果,返回4cffe724-3f68-4710-b785-30afde5d52f8_Add行。内部连接位于varchar和uniqueidentifier,而这种联系不是像等于比较那样工作,而是像包含比较那样工作。我想知道它是如何工作的,这样我就可以确保在没有任何事故的情况下使用这个代码。6 s# R- W8 @4 ]2 w& j+ \* r1 ?, f
9 b9 a* }3 }* q7 y% \7 ~' o 解决方案: |
|
|
|
|
|