列出未使用的ID

时间:2011-08-27 04:38:21

标签: asp.net sql ms-access

我有一个DropDownList,其中填充了表A的主键。表B使用表A主键作为外键。外键只能使用一次。

所以目前我的列表总是填充:1,2,3,4,5(表A中作为主要存在)。表B已经使用了密钥:1,2,3。当表B中已经存在密钥时,我需要它们不在下拉列表中填充。

我试图在SQL查询中声明,只填充表B中不存在的键。我正在尝试但不起作用的查询是:

SELECT Table_A.Grades_ID FROM Table_A INNER JOIN Table_B ON Table_A_ID = Table_B.Grades_ID WHERE Table_A.Grades_ID != Table_B.Grades_ID

如何让我的下拉列表不填充表B中已存在的键(数据)?

4 个答案:

答案 0 :(得分:5)

只需调整SQL即可排除TableB中已存在的PKey值

SELECT Table_A.Grades_ID 
FROM 
  Grades 
  LEFT JOIN Table_B ON Table_A_ID = Table_B.Grades_ID 
WHERE Table_B.Grades_ID Is Null

或者,您可能希望使用“不在”

SELECT
  Tables_A.Grades_ID
WHERE 
  Tables_A.Grades_ID not in (Select Grades_ID from Table_B)

答案 1 :(得分:0)

试试这个:

select table_a.grades_id
from table_a left outer join
on table_a.grades_id = table_b.grades_id
where table_b.<some other field> is null

答案 2 :(得分:0)

SELECT Grades_ID FROM Grades WHERE Grades_ID NOT IN (SELECT Grades_ID FROM Table_B)

答案 3 :(得分:0)

选择Table_A.Grades_ID 来自Table_A 其中Table_A.Grades_ID NOT IN(从Table_B中选择Grades_ID)