【发布时间】:2020-06-13 06:35:30
【问题描述】:
场景是我有两个表,我想使用使用 PHP 的搜索功能来查询它们。有两个表,table_a 和 table_b。在 table_a 中,它有 id、name、middle_name、surname、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%”时,它总是显示两个 row ,一个具有空值的列,一个没有。如果可能的话,我只想显示没有空值的结果。
【问题讨论】:
-
试试这个
SELECT * FROM created_view_table WHERE (name LIKE ? OR surname LIKE ? OR case_num LIKE ?) AND case_num IS NOT null;