簡體   English   中英

MySQL帶有子查詢的嵌套選擇語句

[英]MySQL nested Select statement with subquery

我正在努力進行2小時的數據庫查詢。 數據庫結構如下:文章表

+---------------+-------------+
| id            | ordernumber |
+---------------+-------------+
|             1 |        3243 |
|             2 |        3344 |
|             3 |        3423 |
|             4 |        7687 |
+---------------+-------------+

變型表

+----+-----------+-------+-------+
| id | articleId | stock | price |
+----+-----------+-------+-------+
|  1 |         1 |     3 | 10,99 |
|  2 |         1 |     0 | 10,99 |
|  3 |         1 |     1 | 10,99 |
|  4 |         2 |     0 | 11,99 |
|  5 |         2 |     0 | 11,99 |
|  6 |         2 |     1 | 11,99 |
+----+-----------+-------+-------+

我想獲得所有文章,其中除一個變體外所有其他都具有0庫存。 使用普通的sql語句甚至可能嗎? 我嘗試了一個子查詢,但是沒有成功,因為該子查詢首先執行,並且我需要傳遞外部查詢結果集的當前記錄中的值。

任何幫助深表感謝。

編輯:預期結果:

+----+-------------+
| id | ordernumber |
+----+-------------+
|  2 |       3344  |
+----+-------------+

可以使用group byhaving來完成。

select articleID
from variants
group by articleID
having count(*) - 1 = count(case when stock = 0 then 1 end)

如果您需要有關變體的完整信息,請執行以下操作:

select v.*
from variants v
where v.stock > 0 and
      not exists (select 1
                  from variants v2
                  where v2.articleID = v.articleID and
                        v2.stock > 0 and
                        v2.id <> v.id
                 );

注意:這假定重復的“ 5”是錯字,並且id在表中確實是唯一的。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM