SQL: SELECT, где один из многих столбцов содержит «x», а результат не равен «NULL» - PullRequest
0 голосов
/ 23 октября 2018

У меня есть фрагмент кода, который, как я понял, возможно, довольно неэффективен, хотя я не уверен, как его улучшить.

По сути, у меня есть таблица базы данных, подобная этой:

Пример таблицы БД

Любой или несколько столбцов AG могут соответствовать моему поисковому запросу.Если это так, я хочу запросить 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 голосов
/ 23 октября 2018
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)
...