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)吗?