首页 > 解决方案 > MySQL UNION 和喜欢多表。#1064 mysql

问题描述

感谢您阅读我的问题。我正在尝试将多个表的 3 列连接在一起,然后找到与 LIKE 请求匹配的 nameProduct 列。所有表都有不同的列,看起来就像 3 列:name、id 和 rate。这是我的代码:

(
    SELECT
        nameProduct,
        rate,
        idProduct
    FROM
        tblaptoplist 

)
UNION
    (
    SELECT
        nameProduct,
        rate,
        idProduct
    FROM
        tbcpulist 
)
UNION
    (
    SELECT
        nameProduct,
        rate,
        idProduct
    FROM
        tbgraphicslist
)
UNION
    (
    SELECT
        nameProduct,
        rate,
        idProduct
    FROM
        tbpccaselist 
)
UNION
    (
    SELECT
        nameProduct,
        rate,
        idProduct
    FROM
        tbradiatorslist 
)
UNION
    (
    SELECT
        nameProduct,
        rate,
        idProduct
    FROM
        tbramlist 

)WHERE nameProduct LIKE 'Asus'
;

并且 MySQL 被报告:

#1064 - You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'WHERE
    nameProduct LIKE 'Asus' LIMIT 0, 25' at line 54

我究竟做错了什么?请帮我

标签: mysqlsqlunionsql-like

解决方案


你不能直接申请WHERE结果UNION。您可以过滤每个子选择的查询或将 UNION 的结果包装在 SELECT 中:

SELECT *
  FROM (
      (
      SELECT
        nameProduct,
        rate,
        idProduct
      FROM
        tblaptoplist 
      )
      UNION ...
  ) AS r
 WHERE r.nameProduct LIKE 'Asus'

推荐阅读