我有两个表'A'和'B'。当a1/a2
和v1
相同时,我需要连接两个表,然后它应该采用下面解释的相应数据。你知道吗
A
id a1 a2 a3
1 hi hello we
2 see when tree
3 bee animal fly
B
no. v1 v2
1 bee null
2 when null
预期输出:在这里,当它在A中找到任何数据a1/a2
和B中v1的数据时,当两者相似时,它应该得到从a1/a2
到v2的相应数据
B
no. v1 v2
1 bee fly
2 see tree
我有一个代码,它只能检查一个字段的相似性,而不能同时检查两个字段并获得结果。你知道吗
我的代码:
import MySQLdb
import os
db = MySQLdb.connect(host="localhost", # your host, usually localhost
user="root", # your username
passwd="mysql", # your password
db="sakila") # name of the data base
cursor = db.cursor()
cursor.execute(" SELECT B.NO, B.v1 AS V1, A.a2 AS V2
FROM A INNER JOIN B
WHERE A.a1 = B.v1")
db.commit()
请帮我修改代码!你知道吗
看起来只需要几处改动。看起来您需要一个匹配
v1
到的谓词a1
或a2
。这可以用这样的谓词来完成(作为一个例子):另一个更改是返回
A.a3
而不是A.a2
,这只是更改为SELECT列表中的列引用。你知道吗事实上,它看起来比那复杂一点。在示例输出中,您似乎希望返回
A.a1
而不是B.v1
。你知道吗(我个人倾向于将谓词从连接的
WHERE
子句移到ON
子句。我还希望省略INNER
关键字。但这两个更改实际上并不影响查询。)我想。。如果表A中的a1列或a2列与v1列匹配,则要获得结果,只需将查询更改为:
也许,您也可以尝试使用简单连接而不是内部连接作为
相关问题 更多 >
编程相关推荐