我想要做的是使用SELECT语句并选择2列,其中一列将是生成位,具体取决于Join'ed表列值。
SELECT [User].Id, 0 --this bit must change depending on Rule.Id
FROM [dbo].[User] User
INNER JOIN [dbo].[Rule] Rule
ON [Rule].Id = 8
WHERE [User].UserId = @userId
AND [User].ShopId = @shopId
因此,如果Rule.Id = 8,则该位必须为1 如果Rule.Id = 5则位为0,否则位为0
答案 0 :(得分:1)
建议:
SELECT [User].Id,case when Rule.Id = 8 then 1 when Rule.Id = 5 then 0 else 0 end as bit
FROM [dbo].[User] User
INNER JOIN [dbo].[Rule] Rule
ON [Rule].Id = 8
WHERE [User].UserId = @userId
AND [User].ShopId = @shopId
答案 1 :(得分:1)
如果您使用的是SQL Server,则可以使用CASE函数
http://technet.microsoft.com/en-us/library/ms181765.aspx
SELECT [User].Id, Case Rule.id when 8 Then 1 Else 0 End as MyBit FROM [dbo].[User] User INNER JOIN dbo].[Rule] Rule ON [Rule].Id = 8 WHERE [User].UserId = @userId AND [User].ShopId = @shopId