我有一些表,我们称它们为表GroupMember
ID GroupID Username
1 1 Frey
2 2 Anne
3 2 Bryan
4 3 Belle
5 3 Will
6 4 Drio
7 5 Maxio
8 5 James
这是表Mailbox
ID FromUser ToUser Message Approval
1 Belle Client Hello Group 2
2 Anne Client Hai Group 1
3 Maxio Client Hii Group 4
4 Drio Client hey Group 1
我要select * from Mailbox where (GroupID=1)
因此,if GroupID=1
将显示以下结果:
ID FromUser ToUser Message Approval
2 Anne Client Hai Group 1
4 Drio Client hey Group 1
问题是GroupID
的数据类型为INT,Approval
的数据类型为NVARCHAR。我该怎么解决?
答案 0 :(得分:1)
您可以使用String functions
。考虑到“批准”字段由“组” +数字组成,您可以Replace
'Group'和Cast
字符串为数字
使用加入:
SELECT * FROM Mailbox
JOIN GroupMember
ON CAST(REPLACE(Mailbox.Approval,'Group ','')AS INT)=GroupID
WHERE GroupID=1
不加入(从具有GroupId = 1的邮箱中获取数据):
SELECT * FROM Mailbox WHERE CAST(REPLACE(Mailbox.Approval,'Group ','')AS INT)=1
或使用Concat :
SELECT * FROM Mailbox
JOIN GroupMember
ON Mailbox.Approval=CONCAT('Group ',GroupMember.GroupID)
WHERE GroupID=1
答案 1 :(得分:0)
类似这样的东西:
select *
from Mailbox m
inner join GroupMember g on g.GroupID = cast(right(m.Approval, 1) as int)
where m.Approval = 'Group 1'
答案 2 :(得分:0)