显示已删除的自动增量行

时间:2013-09-22 19:41:56

标签: sql ms-access

我创建了一个只有整数的表,名为Integers,条目从1到74,以找出哪些自动增量ID已从表ATO中删除,该表还有74行

SELECT Integers.ID
  FROM Integers
  LEFT JOIN ATO
    ON Integers.ID = ATO.ID
 WHERE ATO.ID IS NULL

是否有我可以使用的内部SQL范围表,如Range [1-74],所以我可以创建这个“无用的”整数表?类似的东西:

SELECT Range [1-74].ID
  FROM Integers
  LEFT JOIN ATO
    ON Range [1-74].ID = ATO.ID
 WHERE ATO.ID IS NULL

我正在使用Microsoft Access测试我的设计,因为它快速而又脏,并且很容易触发SQL查询。我稍后会移植到MySQL。

2 个答案:

答案 0 :(得分:1)

Access SQL不支持您想要的内容。如果您非常积极地消除Integers表,则可以替换UNION查询。

SELECT 1 AS the_number
FROM Dual
UNION ALL
SELECT 2
FROM Dual
UNION ALL
... etc, up to ...
SELECT 74
FROM Dual

注意Dual是一个自定义表,设计为只包含一行。

但是,我不确定SELECT可以UNION多少Integers。如果可能74,那可能会很慢。

使用Access SQL,ATO表更容易。

如果您可以使用SQL之外的其他内容,则可以创建一个VBA过程来检查{{1}}表,并确定表中缺少哪些范围值。

答案 1 :(得分:0)

你可以使用where子句

SELECT Integers.ID from Integers left join ATO on Integers.ID=ATO.ID where ATO.ID is null 
AND Integers.ID BETWEEN 1 AND 74

更好的是,使用IN关键字

SELECT ID from Integers WHERE ID BETWEEN 1 AND 74 
AND Integers.ID NOT IN (SELECT ID FROM ATO)