MySQL:The used SELECT statements have a different number of columns

執行SQL報錯:The used SELECT statements have a different number of columns

以上翻譯:使用的SELECT語句具有不同數量的列

原因:我們在 SQL 語句中使用了 UNION 連接兩張表時,查詢字段數量不一致導致

# 效果展示
效果圖
我們需要將數據展示如上圖所示

# 錯誤案例

SELECT
	a.quantity AS in_quantity,
	a.price AS in_price,
	(a.quantity * a.price) AS in_amount,
	0 AS out_quantity,
	0 AS out_price,
	0 AS out_amount 
FROM
	store_in_detail a 
WHERE
	a.sku_id = 1345 
UNION ALL
SELECT
	b.quantity AS out_quantity,
	b.price AS out_price,
	(b.quantity * b.price) AS out_amount 
FROM
	store_out_detail b 
WHERE
	b.sku_id = 1345

我們通過入庫表 連接 出庫表,得出商品 id = 1345 的出入庫情況

執行SQL報錯:The used SELECT statements have a different number of columns (使用的SELECT語句具有不同數量的列)

# 原因分析

我們在查詢入庫單,查詢了四個字段:入庫數量,入庫單價,入庫金額,出庫數量(默認0),出庫單價(默認0),出庫金額(默認0)
而查詢出庫單,只查詢了兩個字段:出庫數量,出庫單價,出庫金額

兩次查詢的字段數量不一致,導致 SQL 異常

# 正確實例

SELECT
	a.quantity AS in_quantity,
	a.price AS in_price,
	(a.quantity * a.price) AS in_amount,
	0 AS out_quantity,
	0 AS out_price,
	0 AS out_amount 
FROM
	store_in_detail a 
WHERE
	a.sku_id = 1345 
UNION ALL
SELECT
	0 AS in_quantity,
	0 AS in_price,
	0 AS in_amount,
	b.quantity AS out_quantity,
	b.price AS out_price,
	(b.quantity * b.price) AS out_amount  
FROM
	store_out_detail b 
WHERE
	b.sku_id = 1345

SQL 執行成功

如您在閱讀中發現不足,歡迎留言!!!

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章