嘿,我在 windows 5.1.39-community 和 linux 5.1.39-log 上有两个版本的 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
有什么方法可以让它在 linux 上运行而无需任何 mysql 更新/降级?
最佳答案
由于您的 SQL "as b"columnResult 专门基于 SQL,并且 idOffer 的 WHERE 子句已经符合条件并且应该相同,所以我将删除该柱状元素的分组依据。我只能假设可能有一些空白数据或其他被错误地包含在内,并且“ID1”不同于“ID1”被错误地解释。
关于MySQL不同版本其他结果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2848101/