我创建了一个只有整数的表,名为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。
答案 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)