執行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 執行成功
如您在閱讀中發現不足,歡迎留言!!!