【问题标题】:How to add relationship to table rows based on column value in psql?如何根据psql中的列值向表行添加关系?
【发布时间】:2018-01-17 18:28:12
【问题描述】:

我有一张patients 的表格和一张doctors 的表格。 我想为每个patient 分配一个doctor。 医生可能有很多病人,但一个病人将属于一个医生。 我想根据patientborn_on 值分配一个特定的医生。

目前我正在使用SETWHERE 子句将born_on 低于10 的患者分配给id1 的医生。

 UPDATE patients p
  SET doctor_id = d.id
  FROM doctors d
  WHERE DATE_PART('year', AGE(p.born_on)) < 10
  AND d.id = 1;

我怎样才能在最少的查询中,根据他们的born_on 属性将所有患者分配给医生。

条件如下

age - d.id
< 10 is 1
< 20 is 2
< 30 is 3
< 40 is 4
< 50 is 5
< 60 is 6
< 70 is 7
< 80 is 8
< 90 is 9
>= 100 is 10

【问题讨论】:

    标签: sql postgresql foreign-keys relationship


    【解决方案1】:

    我想知道,如果你已经知道更新的条件,你是否必须去医生的桌子(意思如下)

    UPDATE patients p
      SET doctor_id = case DATE_PART('year', AGE(p.born_on)) 
                      when < 10 then 1
                      when < 20 then 2 
                      ...
                      end
    

    【讨论】:

    • 这个语法必须是CASE expression WHEN value...,所以&lt; 10 不起作用。但是你可以做CASE WHEN expression &lt; 10 THEN 1等等。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2023-03-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-04-05
    • 2017-12-09
    • 1970-01-01
    相关资源
    最近更新 更多