【问题标题】:MySQL UNION and like multiple table . #1064 MysqlMySQL UNION 和喜欢多表。 #1064 mysql
【发布时间】:2020-06-16 07:47:54
【问题描述】:

感谢您阅读我的问题。 我正在尝试将多个表的 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

我做错了什么?请帮帮我

【问题讨论】:

  • 你尝试过什么调试问题?
  • 重新考虑是否真的应该为一个概念(产品名称)设置多个表。

标签: mysql sql union sql-like


【解决方案1】:

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

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

【讨论】:

  • 谢谢。 MySQL 不再报告错误 #1064。您能否再帮我解决这个问题,“为什么即使我确定有与请求匹配的数据也没有查询数据”。
猜你喜欢
  • 1970-01-01
  • 2015-05-13
  • 1970-01-01
  • 2011-05-09
  • 2012-03-17
  • 2010-11-10
  • 2011-07-17
  • 1970-01-01
相关资源
最近更新 更多