我並不是超級好的SQL,但是我將它用於項目。下面是我想編寫查詢,但當然這不是有效的SQL如何獲取「不存在」查詢的最大值
select * from a
where not exists (
select * from b
where a.name = b.name) common
where a.id > max(common.id)
我的目標是獲得a
行不與那些在b
加入,但只有那些具有更大id
比任何加入的人。關鍵是這樣,我可以開始用值填充數據庫,停止,然後在我離開的地方繼續。
我使用python的sqlite;我知道我可以做兩個查詢與Python,但我猜有一種方法用SQL做到這一點(我假設這是「好」)
轉儲:
BEGIN TRANSACTION;
CREATE TABLE "a" (
`Id` INTEGER NOT NULL UNIQUE,
`Name` TEXT,
PRIMARY KEY(`Id`)
);
INSERT INTO a VALUES(16,'Bob');
INSERT INTO a VALUES(17,'George');
INSERT INTO a VALUES(18,'Jimmy');
INSERT INTO a VALUES(19,'Billy');
INSERT INTO a VALUES(20,'Johnny');
INSERT INTO a VALUES(21,'James');
INSERT INTO a VALUES(22,'Bart');
CREATE TABLE "b" (
`Id` INTEGER NOT NULL UNIQUE,
`Name` TEXT NOT NULL,
PRIMARY KEY(`Id`)
);
INSERT INTO b VALUES(16,'Bob');
INSERT INTO b VALUES(19,'Billy');
COMMIT;
有其他列,所以這些不是相同的表,但查詢應該從表a
得到Johnny,James和Bart。
請提供爲[MCVE]一個'.dump' SQLite中適當定製玩具數據庫。 – Yunnosch
@Ynnosch編輯 – phil
@CL。最後一句應該足夠清楚,如果不是? – phil