0

我有两个表编号和分配。分配将数字主列作为外键。我有一个视图,可以为我提供分配表中存在的所有数字。然而,我希望做相反的事情,寻找未分配/不在分配表内的数字。我创建了一个 NOT EXISTS 但是,结果是空白的。结构及视图如下;

number (table)
  NID  primary
  number

allocation (table)
  AID primary
  NID Foreign Key to number table

我的视图结构:

CREATE VIEW vNoAllocationNumber AS
    SELECT NID 
    FROM number
    WHERE NOT EXISTS (SELECT NID
                      FROM number, allocation
                      WHERE allocation.NID = number.NID)
4

1 回答 1

1

试试这个:

CREATE VIEW vNoAllocationNumber AS
    SELECT NID 
      FROM number n
     WHERE NOT EXISTS (
                   SELECT 1
                     FROM allocation a
                    WHERE a.NID = n.NID
           )
         ;

您还可以利用左连接(除非 allocation.NID 构成 AK,否则此技术仅适用于未分配的 NID):

CREATE VIEW vNoAllocationNumber AS
    SELECT NID 
      FROM number n
 LEFT JOIN allocation a ON ( a.NID = n.NID )
     WHERE a.NID IS NULL
         ;
于 2013-05-08T08:49:29.580 回答