我有 2 張桌子。表 ApriceList包含 2 列。ID和currency_id。表 BpriceListItems包含 3 列。產品 priceListID ProductID。
例如priceList
| ID | 貨幣編號 |
|---|---|
| 3 | DF10CCE |
和priceListItems
| ID | 價格表ID | 產品 |
|---|---|---|
| 1 | 3 | 桌子 |
我想在 SQL 中撰寫一條陳述句以回傳布林值(0 或 1),如果其中priceList有專案, 則priceListItems根據它們的 ID 列進行比較(對于表 A:ID,對于表 B:priceListID)
因此,如果priceList's ID存在于 中priceListItems's priceListID,則結果應該為真。
我怎樣才能做到這一點?
下面的說法正確嗎?
SELECT priceList.id,
IF(priceListItems.id IS NULL, FALSE, TRUE) as priceListItems
FROM priceList
LEFT JOIN priceListItems ON (priceList.id = priceListItems.id)
uj5u.com熱心網友回復:
SELECT id,
EXISTS ( SELECT NULL
FROM priceListItems
WHERE priceList.id = priceListItems.priceListID )
FROM priceList;
uj5u.com熱心網友回復:
priceList.id = priceListItems.id 這個測驗不正確,應該是 priceList.id = priceListItems.pricelistid
并且 IF(priceListItems.id IS NULL, FALSE, TRUE) 肯定是可疑的,如果 null 然后 true 更有意義..
uj5u.com熱心網友回復:
if() 函式可以很好地完成作業。假設 pricelist 中的 ID 4 在 pricelistitems 中有兩行,而 pricelist 中的 ID 5 在 pricelistitems 中沒有條目,我們可以嘗試:
insert priceList values(3,'DF10CCE'),(4,'DF11223'),(5,'DD11225');
insert priceListItems values(1,3,'desk'),(2,4,'pp'),(3,4,'ss');
select id, if((select count(*) from priceListItems where pricelistid=pl.id),1,0) from priceList pl;
相關子查詢(select count(*) from priceListItems where pricelistid=pl.id)回傳一個大于等于 0 的 int,可以直接在if()函式中作為布林值來判斷應該回傳哪個值。
轉載請註明出處,本文鏈接:https://www.uj5u.com/gongcheng/461712.html
