我建立了一个查询,用于在多个表中搜索一个值。它可以很好地工作,但是我想在“客户”表中搜索多个字段(另外还有“ last_name”和“ company_name”)。
$sql = "SELECT first_name as name FROM customers WHERE first_name LIKE '%" . $keyword . "%'
UNION
SELECT name as name FROM events WHERE name LIKE '%" . $keyword . "%'
UNION
SELECT product_name as name FROM products WHERE product_name LIKE '%" . $keyword . "%'";
我是否像这样为每个其他字段添加更多单独的行?
"SELECT first_name as name FROM customers WHERE first_name LIKE '%" . $keyword . "%'
UNION
SELECT last_name as name FROM customers WHERE last_name LIKE '%" . $keyword . "%'
UNION
SELECT company_name as name FROM customers WHERE company_name LIKE '%" . $keyword . "%'
它似乎不是最有效的,所以想检查一下。谢谢!
答案 0 :(得分:0)
有一个有效的解决方案。由于仅收集名称,因此将它们收集到三个不同的变量中。然后使用后端语言合并这3个数组。
example for php,
$sql1 = "SELECT first_name as name FROM customers WHERE first_name LIKE '%" . $keyword . "%';
//getting first array result by this query
$sql2 = "SELECT name as name FROM events WHERE name LIKE '%" . $keyword . "%'";
//getting second array result by this query
$sql3 = "SELECT product_name as name FROM products WHERE product_name LIKE '%" . $keyword . "%'";
//getting third array result by this query
$result = array_merge($sql1, $sql2, $sql3)
如果您可以通过后端语言管理数据,则此解决方案将适用。