【问题标题】:Create database query, change the value depending on the value of another cell [closed]创建数据库查询,根据另一个单元格的值更改值[关闭]
【发布时间】:2014-01-12 15:24:56
【问题描述】:

我有表'table_bla'


(来源:gaskoncev.net

请帮我创建 mysql 查询。

说明:

  • 从float_val中选择obj_id第一个非零值,来自field_id 208,209,210
  • 如果该值 >1000 且
  • 如果该值 >2000 且
  • 如果该值 >5000 且
  • 如果该值 >10000 且
  • ..
  • 其他:5

谢谢!

【问题讨论】:

  • 对我来说好像是作业

标签: mysql sql join sql-update case


【解决方案1】:

试试这个:

UPDATE table_bla AS t 
INNER JOIN (SELECT obj_id, float_val AS `value`
            FROM table_bla
            WHERE field_id IN (208,209,210) AND float_val IS NOT NULL
            GROUP BY obj_id) AS A ON t.obj_id = A.obj_id
SET rev_val = (CASE WHEN `value` BETWEEN 1000 AND 2000 THEN 1 
                    WHEN `value` BETWEEN 2000 AND 5000 THEN 2
                    WHEN `value` BETWEEN 5000 AND 10000 THEN 3
                    WHEN `value` BETWEEN 10000 AND 20000 THEN 4
                    ELSE 5
               END)
WHERE field_id = 402;

【讨论】:

  • 查询的UPDATE 部分在哪里,以更新相关行中的rel_val
【解决方案2】:
UPDATE yourTable AS t1
JOIN (SELECT obj_id, MIN(float_val) AS f
      FROM yourTable
      WHERE field_id in (208, 209, 210)
      GROUP BY obj_id) t2
ON t1.obj_id = t2.obj_id
SET rel_val = CASE WHEN f BETWEEN 1001 and 1999 THEN 1
                   WHEN f BETWEEN 2001 AND 4999 THEN 2
                   WHEN f BETWEEN 5001 AND 9999 THEN 3
                   WHEN f BETWEEN 10001 AND 19999 THEN 4
                   ELSE 5
              END
WHERE t1.field_id = 402

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2018-01-16
    • 1970-01-01
    • 2020-02-26
    • 2013-12-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多