[英]How to use mysql subquery with a where clause in a where clause that requires data from the superquery
我要試試這個:
SELECT
Bestellung.ID BNr,
RechnAddr Kunde,
(SELECT
Name
FROM `User`
WHERE ID = Bestellung.SalesPerson) Verkaeufer,
Clerk Sachbearbeiter,
(SELECT
Ort
FROM `Location`
WHERE ID = Bestellung.Location) Standort,
CONCAT_WS('.', LPAD(Day, 2,'0'), LPAD(Month, 2,'0'), Year) Erstelldatum
FROM `Bestellung`
WHERE
SalesPerson != ''
AND
(SELECT COUNT(*) cnt FROM _BestellungsPosition bp
WHERE bp.OrderID = Bestellung.BNr) = 0
我只希望所有沒有訂單項的訂單,但是mysql告訴我“ where子句中的未知列'Bestellung.BNr'...”我在使用子查詢嗎?
請幫我
編輯:我將以前使用的(偽)查詢更改為真正的查詢,因為我的偽查詢有效,但是具有真實數據的真正查詢卻沒有
edit2:現在我將查詢更改為:
SELECT
Bestellung.ID BNr,
RechnAddr Kunde,
(SELECT
Name
FROM `User`
WHERE ID = Bestellung.SalesPerson) Verkaeufer,
Clerk Sachbearbeiter,
(SELECT
Ort
FROM `Location`
WHERE ID = Bestellung.Location) Standort,
CONCAT_WS('.', LPAD(Day, 2,'0'), LPAD(Month, 2,'0'), Year) Erstelldatum
FROM `Bestellung` LEFT JOIN _BestellungsPosition bp
WHERE
SalesPerson != ''
AND
bp.Order IS NULL
而且它的工作原理...感謝響應者的提示,但是我認為他刪除了答案
edit2:現在我將查詢更改為:
SELECT
Bestellung.ID BNr,
RechnAddr Kunde,
(SELECT
Name
FROM `User`
WHERE ID = Bestellung.SalesPerson) Verkaeufer,
Clerk Sachbearbeiter,
(SELECT
Ort
FROM `Location`
WHERE ID = Bestellung.Location) Standort,
CONCAT_WS('.', LPAD(Day, 2,'0'), LPAD(Month, 2,'0'), Year) Erstelldatum
FROM `Bestellung` LEFT JOIN _BestellungsPosition bp
WHERE
SalesPerson != ''
AND
bp.Order IS NULL
而且它的工作原理...感謝響應者的提示,但是我認為他刪除了答案
您需要指定ID以在子查詢中選擇(或排除),這可能效率不高。 請嘗試以下操作:
SELECT
ID, Customer, SalesPerson, Clerk, Date
FROM `Order`
WHERE ID NOT IN
(SELECT DISTINCT OrderID FROM OrderItem);
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.