sqlite3一对一加入

时间:2014-06-03 15:18:49

标签: join sqlite

我有两张桌子:

CREATE TABLE tbA (
       columnA TEXT
)

CREATE TABLE tbB (
       columnB TEXT
)

tbA有以下记录:

A1
A2
A3

tbB有以下记录:

B1
B2
B3

如何在两个表一对一匹配的情况下从两个表中检索记录?我的意思是,如果我在A1中搜索ROWIDtbA的{​​{1}},则它与来自ROWID的{​​{1}}的{​​{1}}匹配{{1} }}

到目前为止我尝试了什么:

tbB

但结果是:

B1

我只需要第一行(两个表中等于select * from tbA cross join tbB where columnA = "A1" )而不是后续行;

2 个答案:

答案 0 :(得分:0)

如果您接受创建新列,则可以轻松地逐个连接两个表的行。

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

答案 1 :(得分:0)

感谢您的帮助;

找到了;不将显式列声明为PRIMARY KEY并使用隐式rowid列:

SELECT * FROM tbA, tbB WHERE tbA.columnA="A1" and tbA.rowid=tbB.rowid