T-SQL检查查询返回的值列表是否存在于另一个表的列

时间:2016-04-05 18:56:10

标签: sql-server tsql sql-server-2014

我将GUID分配给用户可以登录多个帐户的设备。每次应用程序运行时,它都会在表中注册GUID和UserId。 GUID将保持唯一,但可能有多个UserId。

我有第二个表,每个UserId都有订阅。

我需要找到从GUID搜索返回的所有UserId,然后查看订阅表中是否存在任何UserId。

如何在MS SQL Server 2014中使用T SQL执行此操作?

谢谢。

3 个答案:

答案 0 :(得分:0)

在这两个表上进行内连接。

Select 
  tableA.valueColumn
  from tableA
  inner join
  tableB
  on tableA.valueColumn = tableB.valueColumn

答案 1 :(得分:0)

假设您提供要作为参数查询的GUID ...

SELECT u.UserID, s.Subscription
FROM Users u
INNER JOIN Subscriptions s
ON u.UserID = s.UserID
WHERE u.GUID = @guid

如果要包含没有订阅的UserID,请使用LEFT JOIN而不是INNER JOIN。

答案 2 :(得分:0)

以下应该做的伎俩(你只需要最后一个查询,但我不知道你的表名是什么,所以我只是先建立一些废话表/数据)

$addresses = array(
    '192.000.002.001',
    '2001:0db8:0000:0000:0000:0000:0000:0001',
);

foreach ($addresses as $original) {
    $normalised = normalise_ip($original);
    $normalised_ipv6 = normalise_ip($original, true);

    echo "Original: $original; ";
    echo "Normalised: $normalised; ";
    echo "As IPv6: $normalised_ipv6\n";
}