我必須在一個查詢中從不同的表中獲取結果。但是得到了未知的列錯誤。
SET sql_mode = '';
SELECT
e_mills.m_id,
e_mills.mill_name,
e_cities.city_name,
e_sugardata.mill_closing_stock,
(
SELECT GROUP_CONCAT(mill_closing_stock SEPARATOR ', ')
FROM (
SELECT mill_closing_stock
FROM `e_sugardata`
WHERE m_id = e_mills.m_id
GROUP BY date_added
ORDER BY date_added DESC
LIMIT 0,4
) AS mill_closing_stock
) AS stock_chart
FROM e_mills
INNER JOIN e_cities
ON e_mills.city_id = e_cities.city_id
INNER JOIN e_sugardata
ON e_sugardata.m_id = e_mills.m_id
ORDER BY e_mills.province_id
錯誤
#1054 - 'where 子句'中的未知列'e_mills.m_id'
更新
相同的查詢在我的計算機上有效,但在其他計算機上無效
更新 2 在 MySQL 8 上作業
MySQL 8 資料庫小提琴
uj5u.com熱心網友回復:
為了避免 MySQL 5.7 中的錯誤,您需要擺脫帶有限制的嵌套查詢。您可以使用 SUBSTRING_INDEX 函式來代替 LIMIT 子句。此外,GROUP BY 子句是不必要的,特別是因為如果 SELECT 子句的列串列與 GROUP BY 串列不匹配,它在不更改 sql_mode 的情況下不起作用。
-- SET sql_mode = ''; -- no more needed.
SELECT
e_mills.m_id,
e_mills.mill_name,
e_cities.city_name,
e_sugardata.mill_closing_stock,
(
SELECT
SUBSTRING_INDEX(
GROUP_CONCAT(mill_closing_stock ORDER BY date_added DESC SEPARATOR ', '
), ', ', 4
)
FROM `e_sugardata`
WHERE m_id = e_mills.m_id
) AS stock_chart
FROM e_mills
INNER JOIN e_cities
ON e_mills.city_id = e_cities.city_id
INNER JOIN e_sugardata
ON e_sugardata.m_id = e_mills.m_id
ORDER BY e_mills.province_id
db<>fiddle:MySQL 5.7和MySQL 8
轉載請註明出處,本文鏈接:https://www.uj5u.com/net/331488.html
下一篇:獲取來自不同行的值的公共列
