【问题标题】:MySQL different versions other resultsMySQL不同版本其他结果
【发布时间】:2010-05-17 10:01:06
【问题描述】:

嘿,我在 windows 5.1.39-community 和 linux 5.1.39-log 上有 2 个版本的 mysql 我执行一个查询:

SELECT `o`.`idOffer`, 

       `o`.`offer_date`, 
       `p`.`factory`, 
       `c`.`short` AS `company`, 
       `s`.`name` AS `subcategory`, 
       `ct`.`name` AS `category`,
       count( (select count(1) from product where idProduct=idOffer group by idOffer) ) as b
 FROM `Offer` AS `o` 
 LEFT JOIN `Product` AS `p` ON o.idOffer = p.idOffer 
 LEFT JOIN `company` AS `c` ON o.company = c.id 
 LEFT JOIN `Subcategory` AS `s` ON s.idSubcategory = o.idSubcategory 
 LEFT JOIN `Category` AS `ct` ON ct.idCategory = s.idCategory 
 WHERE (o.idOffer = p.idOffer) GROUP BY `o`.`idOffer`

在 windows 上它可以正常工作,但在 linux 上它说:

ERROR 1242 (21000): Subquery returns more than 1 row

有没有办法让它在没有任何 mysql 更新/降级的情况下在 linux 上运行?

【问题讨论】:

  • 子查询中的group by idOffer 子句不是因为where idProduct=idOffer 而多余吗?只需在子查询中不使用 group by 即可尝试。
  • 它有效,谢谢,不会考虑这个。再次感谢:)

标签: mysql mysql-error-1242


【解决方案1】:

由于您的 SQL "as b" columnResult 专门基于 SQL,并且 idOffer 的 WHERE 子句已经符合条件并且应该相同,因此我将删除此列元素的 group by。我只能假设可能有一些空白数据或其他被错误地包含在内,并且“ID1”不同于“ID1”被错误地解释。

【讨论】:

    【解决方案2】:

    不知道这是否与它有关,但是 Linux MySQL 表是区分大小写的,而 Windows 表不区分大小写(我怀疑是因为文件系统),无论如何,你有 Productproduct 这将造成一些问题。

    不知道这是否真的是您问题中问题的原因,但它是一堵墙,您最终可能会撞上,我认为应该提出来。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-08-08
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-08-03
      相关资源
      最近更新 更多