【发布时间】:2009-03-18 15:12:24
【问题描述】:
假设我有以下表格:
- 客户
- 产品
- 客户产品
有没有一种方法可以从客户和产品表中进行选择,其中值不在映射表中?基本上我需要一个匹配的客户和他们不拥有的产品列表。
另一个转折点:我需要为每个产品配对一个客户。因此,如果 5 个客户没有产品 A,则只有查询中的第一个客户应该有产品 A。所以结果看起来像这样:
(假设所有客户都拥有产品 B,并且不止一个客户拥有产品 A、C 和 D)
- 客户 1,产品 A
- 客户 2,产品 C
- 客户 3,产品 D
最后的转折:我需要将此查询作为 SQL Sever 中 UPDATE 语句的一部分运行。所以我需要从第一行取值:
客户 1,产品 A
并将客户记录更新为类似
UPDATE Customers
SET Customers.UnownedProduct = ProductA
WHERE Customers.CustomerID = Customer1ID
但如果我能在一个 SQL 语句中完成整个过程,那就太好了。所以我运行了一次查询,它用他们不拥有的产品更新了 1 个客户。 希望这不会让您感到困惑!提前致谢!
【问题讨论】:
-
如果您有两个客户,只有一个产品,但他们都不拥有?
-
那么查询应该只返回一条记录,第一个客户。
标签: sql sql-server stored-procedures subquery nested-queries