SQL:SELECT,其中许多列之一包含“ x”,结果不为“ NULL”

时间:2018-10-23 09:35:38

标签: python sql python-3.x pymysql

我有一段代码我意识到可能效率很低,尽管我不确定如何改进它。

基本上,我有一个像这样的数据库表:

Example DB table

A到G列中的任何一列或几列都可能与我的搜索查询匹配。如果是这种情况,我想从该行中查询VALUE。不过,我需要VALUE不等于NULL,因此,如果是这样,应该继续寻找。如果我的查询是abc,我想获得correct

下面是我当前的代码,使用名为db的数据库和表table

cur=db.cursor()

data="123"
fields_to_check=["A","B","C","D","E","F","G"]

for field in fields_to_check:

    "SELECT Value FROM table WHERE {}='{}'".format(field,data)
    query=cur.fetchone()
    if query and query !="NULL":
        break

db.close()

我认为执行8个查询这一事实可能效率很低。

1 个答案:

答案 0 :(得分:0)

cur=db.cursor()

data="123"
fields_to_check=["A","B","C","D","E","F","G"]
sub_query = ""

for field in fields_to_check:
    sub_query = sub_query + "or {}='{}' ".format(field,data)

if sub_query:
    query = "SELECT Value FROM table WHERE ("+ str(sub_query[2:]) +") and value IS NOT NULL;"

if query:
    cur.execute(query)
    rows = cur.fetchall()
    if rows:
      for row in rows:
        print(row)