Join sqlite3一对一联接
我有两张桌子:Join sqlite3一对一联接,join,sqlite,Join,Sqlite,我有两张桌子: CREATE TABLE tbA ( columnA TEXT ) 及 tbA有以下记录: A1 A2 A3 B1 B2 B3 及 tbB有以下记录: A1 A2 A3 B1 B2 B3 当两个表一一匹配时,如何从这两个表中检索记录?我的意思是,如果我搜索tbA中ROWID为1的A1,它将与tbB中相同ROWID的记录相匹配,即B1 到目前为止,我所尝试的: select * from tbA cross join tbB where columnA =
CREATE TABLE tbA (
columnA TEXT
)
及
tbA
有以下记录:
A1
A2
A3
B1
B2
B3
及
tbB
有以下记录:
A1
A2
A3
B1
B2
B3
当两个表一一匹配时,如何从这两个表中检索记录?我的意思是,如果我搜索tbA
中ROWID
为1的A1
,它将与tbB
中相同ROWID
的记录相匹配,即B1
到目前为止,我所尝试的:
select * from tbA cross join tbB where columnA = "A1"
但结果是:
1.> A1 B1
2.> A1 B2
我只需要第一行(两个表中的equal
ROWID
),而不是后面的行 如果您接受创建一个新列,您可以很容易地一个接一个地连接两个表的行
CREATE TABLE tbA (id INTEGER PRIMARY KEY AUTOINCREMENT, columnA TEXT);
CREATE TABLE tbB (id INTEGER PRIMARY KEY AUTOINCREMENT, columnB TEXT);
INSERT INTO tbA (columnA) values ("A1");
INSERT INTO tbA (columnA) values ("A2");
INSERT INTO tbA (columnA) values ("A3");
INSERT INTO tbB (columnB) values ("B1");
INSERT INTO tbB (columnB) values ("B2");
INSERT INTO tbB (columnB) values ("B3");
SELECT tbA.columnA, tbB.columnB FROM tbA, tbB WHERE tbA.id=tbB.id;
A1|B1
A2|B2
A3|B3
谢谢你的帮助
找到它;不将显式列声明为主键并使用隐式rowid
列:
SELECT * FROM tbA, tbB WHERE tbA.columnA="A1" and tbA.rowid=tbB.rowid
您没有显示任何
rowid
。您是指表的内容吗?我是指您在问题中提到的rowid
。将记录与tbB
->where tbA.\u id=tbB.\u id
中始终有一个rowid列,无论您是否明确声明它。我们可以使用隐式rowid列而不声明新的主键(本例中为id)吗?