我需要迁移到另一台服务器主机,MySQL 版本不同。我要求更改版本,但虽然这没有发生,但我的网站返回错误。
主要错误在此查询中:
SELECT p.*
FROM product p INNER JOIN
account a
ON a.id = p.account_id INNER JOIN
supplier s
ON a.id = s.account_id
WHERE p.status = 1 AND a.type = 'supplier' AND
s.id IN (SELECT supplier_id FROM supplier_location WHERE location_id IN (SELECT _id FROM (SELECT @r AS _id, (SELECT @r := parent_id FROM location WHERE id = _id) AS parent_id FROM (SELECT @r := 3523) vars, location h WHERE @r <> 0) T1 ) ) AND
p.name LIKE '%nira%'
ORDER BY p.category_id, p.account_id, p.name ASC
在 MySQL 5.6.20 中它可以工作,但在 MySQL 5.7.10 中返回此错误:
Unknown column '_id' in 'where clause'
有人知道怎么解决吗?
谢谢。
最佳答案
您可以通过更改来修复它
(SELECT @r := parent_id FROM location WHERE id = _id)
至
(SELECT @r := parent_id FROM location WHERE id = @r)
修改后的查询:
SELECT p.*
FROM product p INNER JOIN
account a
ON a.id = p.account_id INNER JOIN
supplier s
ON a.id = s.account_id
WHERE p.status = 1 AND a.type = 'supplier' AND
s.id IN (SELECT supplier_id FROM supplier_location WHERE location_id IN (SELECT _id FROM (SELECT @r AS _id, (SELECT @r := parent_id FROM location WHERE id = @r) AS parent_id FROM (SELECT @r := 3523) vars, location h WHERE @r <> 0) T1 ) ) AND
p.name LIKE '%nira%'
ORDER BY p.category_id, p.account_id, p.name ASC
关于mysql - mysql版本为5.7.10时查询出错(在mysql 5.6.20有效),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35960102/