gpt4 book ai didi

mysql - 如何创建一个迭代表并采用多个参数的 MySQL 条件函数

转载 作者:行者123 更新时间:2023-11-29 17:39:45 26 4
gpt4 key购买 nike

我对 PL/SQL 非常陌生,但我想根据给定行中多个字段的值,为表中的所有条目填充一个空字段。所以我想采用的逻辑是,但是在为汽车经销商设置 table 时,我需要记住几件事......

首先,按不同的used_car_ids进行分组,然后根据......更新列

  1. 如果used_car_id 列等于new_car_id,并且drive_mode 和safetey_ rating 均为1,则将Parking_Spot 编号设置为1 作为最高优先级。
  2. 如果used_car_id列等于new_car_id,但drive_mode为1且safety_ rating为2,则将Parking_Spot列设置为2或可用的连续Parking_Spot编号

    • 如果还有更多与此类似的条件,但只有安全等级不同,我想继续将 Parking_Spot 编号增加到该条目的下一个可用的连续 Parking_spot 编号
  3. 如果used_car_id列等于new_car_id,但drive_mode为2且safety_ rating为1,则将Parking_Spot列设置为3,或下一个可用的Parking_Spot编号

  4. 如果used_car_id列等于new_car_id,但drive_mode为2并且safety_ rating为2,则将Parking_Spot编号设置为4,或下一个可用的Parking_Spot编号
    • 适用与上述相同的规则。

如果不满足最高优先级情况,则应将 2 个用例视为最高优先级,并将其设置为 Parking_Spot=1

这是一张小图片,是我理想中想要的。正如您在图片中看到的, parking 位编号为 1 和 2,具体取决于used_car_id、new_car_id、drive_mode 和 safety_ rating 是否为 1 和 2,但是一旦used_car_id 和 new_car_id 不同, parking 位编号就会增加到 3 和 4 .

Used Car Dealer Table

我假设我需要一个函数来输入 4 个参数,然后根据这些字段返回一个数字作为 parking 位。但我仍然有点不确定如何去做。任何帮助,将不胜感激。谢谢。

最佳答案

从您的标签中并不清楚您实际上使用的是 Oracle 数据库还是 MySQL。这个答案假设是前者。

您的问题有几个空白,但您似乎想根据 drive_modesafety_ rating 为每一行指定一个序号。您多次提到“used_car_id 列等于 new_car_id”,但从未提及当它们不相等时您想要执行的操作。

对于所写的问题,似乎可以使用分析函数以相当简单的方式解决。在这种情况下,我们只需告诉函数按 drive_mode_idsafety_ rating 对行进行排序,并为结果顺序中的每一行提供一个连续的数字:

SELECT id,
used_car_id,
new_car_id,
car_features_id,
drive_mode_id,
safety_rating,
ROW_NUMBER () OVER (ORDER BY drive_mode, safety_rating)
AS parking_spot
FROM your_table
WHERE used_car_id = new_car_id
<小时/>

从 8.0.2 开始,MySQL 似乎支持分析函数(又名窗口函数),因此如果您使用该版本或更高版本,上述解决方案应该仍然有效(如果没有,this answer 可能会有所帮助)。

要更新它以将 used_car_id = new_car_id 视为排序条件,您需要向 ORDER BY 添加条件:

SELECT id,
used_car_id,
new_car_id,
car_features_id,
drive_mode_id,
safety_rating,
ROW_NUMBER ()
OVER (
ORDER BY
CASE WHEN used_car_id = new_car_id THEN 1 ELSE 2 END,
drive_mode,
safety_rating)
AS parking_spot
FROM your_table

这未经测试,所以我不能保证这在语法上完全正确,但应该很接近。

关于mysql - 如何创建一个迭代表并采用多个参数的 MySQL 条件函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50067449/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com