MYSQL запрос на исключение столбца с нулевым значением в результате - PullRequest
0 голосов
/ 29 февраля 2020

Сценарий таков: у меня есть две таблицы, которые я хотел запросить, используя функцию поиска, используя PHP. Есть две таблицы, table_a и table_b. В table_a столбцы id, name, middle_name, фамилия, case_no и table_b похожи. Все данные в table_b импортируются из другого источника, а данные table_a вставляются пользователями вручную. Были случаи, когда есть дубликаты данных от table_a и table_b. Я хочу удалить дубликаты данных из table_b. Допустим, в table_a есть столбец с нулевым значением, и я хочу исключить его из результата.

+----------+----------+----------+     +----------+----------+----------+
| name     | surname  | case_num |     | name     | surname  | case_num |
+----------+----------+----------+     +----------+----------+----------+
|  john    |  wick    |  1434    |     |  john    |  wick    |  null    |
+----------+----------+----------+     +----------+----------+----------+
      table_a                                  table_b

То, что я сделал сейчас, - это создание представления и объединение их вместе с помощью Union. Теперь это будет выглядеть следующим образом.

+----------+----------+----------+     
| name     | surname  | case_num |     
+----------+----------+----------+     
|  john    |  wick    |  1434    |     
+----------+----------+----------+ 
|  john    | wick     |  null    |
+----------+----------+----------+

Теперь я хочу запросить эту таблицу и показать только результат, который не имеет нулевого значения, равного

+----------+----------+----------+     
|  john    |  wick    |  1434    |     
+----------+----------+----------+

И если это Можно автоматически удалить строку с нулевым значением, равным

+----------+----------+----------+     
|  john    |  wick    |  null    |     
+----------+----------+----------+

Но первая проблема заключается в исключении строки с нулевым значением из результата. Вот мой запрос.

SELECT * FROM created_view_table WHERE name LIKE ? OR surname LIKE ? OR case_num LIKE ? AND 
case_num <> null;

SELECT * FROM created_view_table WHERE name LIKE ? OR surname LIKE ? OR case_num LIKE ? AND 
case_num IS NOT null;

Всякий раз, когда я ищу "% john%", он всегда показывает обе строки: ту, в которой столбец имеет нулевое значение, а другую - нет. Если возможно, я хочу только показать результат, который не имеет нулевого значения.

1 Ответ

2 голосов
/ 29 февраля 2020

Вы используете или предложение , поэтому вам нужно заключить в скобки запросы с помощью или и попытаться выполнить ниже

select * from created_view_table WHERE (name LIKE ? OR 
surname LIKE ? OR case_num LIKE ?) AND  case_num is not null;

Это решит вашу проблему.

...