私はSQLとは格段に優れていませんが、プロジェクトに使用しています。以下は、私の目標はb
のものと結合していないa
で行を取得することですが、それ以上でのみ私が書きたいクエリがあるが、もちろんそれは"存在しない"クエリの最大値を取得する方法
select * from a
where not exists (
select * from b
where a.name = b.name) common
where a.id > max(common.id)
有効なSQLではありませんid
は参加するもののいずれよりも優先されます。これのポイントは、データベースを値で埋めることを開始し、中止してから後で続行できるようにすることです。
私はPythonでsqliteを使用しています。そこている
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;
:私は私のpythonで2つのクエリを行うことができます知っているが、私はSQLでそれを行う方法があります推測している(と私はそれが「より良い」だと仮定しています)
ダンプ他の列は同じテーブルではありませんが、クエリでは、テーブルa
からJohnny、James、Bartを取得する必要があります。これは、少なくとも1つのレコードがb
に一致していることを前提とし
select a.*
from a
where a.id > (select max(b.id) from b where a.a_field = b.b_field)
:
SQLiteの中に適切に合わせたおもちゃのデータベースの[MCVE] '.dump'として提供してください。 – Yunnosch
@Yunnosch編集 – phil
@ CL。最後の文は十分にはっきりしていなければなりませんか?興味深い; – phil