目前,我正在尝试实现一个餐厅应用程序。在数据库中,我有 category
表和 item
表,一个类别必须有很多项目,一个项目必须有一个类别,所以这是一对多的关系,我想更新当一个类别没有任何项目时的一些类别记录,这意味着如果 qty on hand = 0
类别 status
应该更新为 "deactivated"
这些是我的 table
+-------+----------+-------------------+
| CatId | status | catagory |
+-------+----------+-------------------+
| C001 | Deactive | SeaFood |
| C002 | Deactive | ITALIAN & western |
| C003 | Active | Kottu |
| C004 | Active | Rice |
+-------+----------+-------------------+
+--------+-------+--------+-----------+-----------------+------------+----------+
| ItemId | CatId | Price | QtyOnHand | iteamName | Date | Time |
+--------+-------+--------+-----------+-----------------+------------+----------+
| I001 | C003 | 650.00 | 30 | chease kottu | 2020-04-26 | 19:55:59 |
| I002 | C003 | 650.00 | 25 | vgetable kottu | 2020-04-26 | 19:55:59 |
| I003 | C003 | 450.00 | 3 | chicken koththu | 2020-04-27 | 08:32:12 |
+--------+-------+--------+-----------+-----------------+------------+----------+
这是我到目前为止尝试过的查询。
UPDATE catagory INNER JOIN item ON catagory.CatId = item.CatId SET catagory.`status` = "deactivated"
WHERE ((SELECT SUM(item.QtyOnHand)) >= 0);
此查询更新项目表中的所有类别 CatId
作为初学者,对于 MySQL
,我需要一些帮助。
最佳答案
只需在子查询中添加 where
子句并根据需要过滤它们。
像这样。
UPDATE catagory INNER JOIN item ON catagory.CatId = item.CatId
SET catagory.status ="deactivated"
WHERE (SELECT SUM(item.QtyOnHand) where catagory.CatId = item.CatId GROUP By item.CatId) <= 0 ;
关于mysql - 从 INNER JOIN 特定 ids 更新,但所有更新,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61517168/