Python 根据另一个表中的匹配值从一个表中选择数据
我试图根据另一个表中的数据从一个表中选择数据。我的代码如下所示: 但我无法让它产生我所希望的结果。我的发言如下:Python 根据另一个表中的匹配值从一个表中选择数据,python,sqlite,Python,Sqlite,我试图根据另一个表中的数据从一个表中选择数据。我的代码如下所示: 但我无法让它产生我所希望的结果。我的发言如下: c.execute("SELECT item1, item2, item3 FROM TableA WHERE xyz IS NULL AND item1 = (SELECT item1 FROM TableB) AND item2 = (SELECT item2 FROM TableB) AND item3 = (SELECT item3 FROM TableB)" 我试图从Ta
c.execute("SELECT item1, item2, item3 FROM TableA WHERE xyz IS NULL AND item1 = (SELECT item1 FROM TableB) AND item2 = (SELECT item2 FROM TableB) AND item3 = (SELECT item3 FROM TableB)"
我试图从TableA中选择所有匹配结果,其中tableB中的item1、item2和Item3与TableA+中的匹配结果相匹配,TableA的xyz值为NULL
*TableA*
item1 | item2 | item3 | xyz
banana | apple | pear | NULL
carrot | potato | sausage | 1
cat | dog | bird | NULL
fish | squid | tortoise | 4
*TableB*
item1 | item2 | item3
banana | apple | pear
cat | dog | bird
fish | squid | tortoise
foo | bar | deadbeef
因此,我试图选择:
banana, apple, pear
cat, dog, bird
但我的声明只是返回表B中的第一个匹配项:
i、 e.香蕉、苹果、梨
;并且不会继续搜索表B中的其余项
为什么会发生这种情况?它能被解决吗?我现在手头没有SQLite,所以请原谅打字错误。。。但这不是一个很好的解决方案吗
c.execute("""SELECT item1, item2, item3
FROM TableA JOIN TableB USING (item1,item2,item3)
WHERE xyz IS NULL")
此联接将匹配相同的“三元组”(item1、item2、item3)上的行。
如果您的两个表只有三列
item1..3
的共同点,那么您甚至可能希望转到自然联接:
这是对两个表中具有相同名称的列隐式进行的内部联接。
我不是一个大风扇,虽然,因为它可能成为一个定时炸弹准备爆炸的一天,有人无意中添加一些列到您的表 太棒了,谢谢你(也谢谢你的链接和建议)。两个例子都有效,但我想我会听从你的建议,坚持第一个!
c.execute("""SELECT item1, item2, item3
FROM TableA NATURAL JOIN TableB
WHERE xyz IS NULL")