MySQL搜索多个表,并且在一个表中搜索多个列

时间:2019-06-13 19:09:46

标签: mysql sql

我建立了一个查询,用于在多个表中搜索一个值。它可以很好地工作,但是我想在“客户”表中搜索多个字段(另外还有“ 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 . "%'

它似乎不是最有效的,所以想检查一下。谢谢!

1 个答案:

答案 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)

如果您可以通过后端语言管理数据,则此解决方案将适用。