mysql - 从 INNER JOIN 特定 ids 更新,但所有更新

标签 mysql inner-join

目前,我正在尝试实现一个餐厅应用程序。在数据库中,我有 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/

相关文章:

mysql - 一起使用 COUNT 和 DISTINCT 关键字来计算不同值的数量

mysql - 如何将mysql结果显示到标签或文本?

mysql - 将 MySQL 表导出到 CSV 文件

php - 如何将大记录放入csv文件中

mysql - 多个表的 SQL JOIN 清晰度

php - 将散列与散列 mysql 密码进行比较时出错(输出值相等)

mysql - 使用 t2 中的字段在 t1 上插入之前触发

sql - 将一个表中的值更新到另一个表中

mysql - 外部和内部 SQL 连接

php - MYSQL查询排除特定条件下的记录