【问题标题】:How would I use "Inner join" and "if not exists" in this case?在这种情况下,我将如何使用 \"Inner join\" 和 \"if not exists\"?
【发布时间】:2023-02-18 16:03:58
【问题描述】:

我有 2 个主表:driversdriver_riders 通过外键连接。每天都有一些司机进行单次或多次骑行。

我还有一张表driver_rewards

driver_rewards
---
  ride_id
  reward_percent
  reward_amount

我将如何扫描rides,选择status = success游乐设施并将奖励记录插入driver_rewards但是仅有的对于那些尚未插入的游乐设施——到目前为止,在 driver_rewards 中没有 ride_id = ? 的记录。

如何正确编写一个 SQL 查询来选择这样的rides?我知道 LEFT JOINNOT EXISTS 但我将如何在这里使用它们?

【问题讨论】:

    标签: sql postgresql


    【解决方案1】:

    不确定其他表中的列,但它看起来像这样:

    INSERT INTO driver_rewards
    
    SELECT ride_id, NULL, NULL
    FROM rides r
    WHERE NOT EXISTS (SELECT 1 FROM driver_rewards rew WHERE rew.ride_id = r.ride_id)
       AND r.status = 'success'
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2017-01-08
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-04-24
      • 1970-01-01
      相关资源
      最近更新 更多