刚学SQL,遇到判断问题不知道怎么写,求点一下,3q3q!

刚学SQL,遇到判断问题不知道怎么写,求点一下,3q3q!

根据查询选择表1 中的 1或者2或者3 , 来确定, 表2中的到期日期是哪天,这个1的日期取表2的日期,2的取表3的日期,3取表4的日期,结果显示在表2种的到期日期里面。
比如我查表2,id属于2的, 计算方式选择表1的2,

最终就想在表2里面根据输入表1的ID 决定怎么计算日期,跟谁计算日期

img

你的提问描述的不够清晰,建议把 表3 表4 也说明一下

您可以使用 SQL 的 CASE 语句来实现这个需求。代码如下:


SELECT 
  id,
  CASE 
    WHEN (SELECT option FROM table1 WHERE id = table2.id) = 1 THEN (SELECT date FROM table2 WHERE id = table2.id)
    WHEN (SELECT option FROM table1 WHERE id = table2.id) = 2 THEN (SELECT date FROM table3 WHERE id = table2.id)
    WHEN (SELECT option FROM table1 WHERE id = table2.id) = 3 THEN (SELECT date FROM table4 WHERE id = table2.id)
  END AS expiration_date
FROM 
  table2;

SELECT 语句中,首先是要显示的表2的列 id。
然后是 CASE 语句,根据表1的 option 列的值来决定表2的到期日期的值。
如果表1的 option 值是 1,那么表2的到期日期为表2中 id 对应的 date。
如果表1的 option 值是 2,那么表2的到期日期为表3中 id 对应的 date。
如果表1的 option 值是 3,那么表2的到期日期为表4中 id 对应的 date。
计算结果的列的别名为 expiration_date。
最后是 FROM 语句,选择来自表2的数据。
这段代码就可以实现根据表1的 option 字段值,决定表2中到期日期的值。

如果我的回答解决了您的问题,希望您采纳我的回答


SELECT t2.id,
CASE
WHEN t1.id=1 THEN t2.date
WHEN t1.id=2 THEN t3.date
WHEN t1.id=3 THEN t4.date
END AS due_date
FROM table2 t2
INNER JOIN table1 t1
ON t2.id = t1.id
LEFT JOIN table3 t3
ON t2.id = t3.id
LEFT JOIN table4 t4
ON t2.id = t4.id;

SELECT t2.id,
CASE
WHEN t1.id=1 THEN t2.date
WHEN t1.id=2 THEN t3.date
WHEN t1.id=3 THEN t4.date
END AS due_date
FROM table2 t2
INNER JOIN table1 t1
ON t2.id = t1.id
LEFT JOIN table3 t3
ON t2.id = t3.id
LEFT JOIN table4 t4
ON t2.id = t4.id;

假设表1为table1,包含以下列:id、calculate_type。

假设表2为table2,包含以下列:id、due_date。

如果想要在表2中根据表1的id和calculate_type来计算并更新due_date,可以使用如

UPDATE table2
SET due_date =
    CASE table1.calculate_type
        WHEN 1 THEN (SELECT date_column FROM table2 WHERE id = 1)
        WHEN 2 THEN (SELECT date_column FROM table3 WHERE id = 1)
        WHEN 3 THEN (SELECT date_column FROM table4 WHERE id = 1)
    END
FROM table1
WHERE table2.id = table1.id;

这里使用了CASE语句来根据不同的calculate_type选择不同的日期计算方式,并使用了SELECT子查询来获取日期数据。同时,使用了UPDATE语句来更新表2中的due_date列,并使用了FROM子句连接表1和表2,以便进行关联更新。

回答不易 求求您采纳哦 感激不尽

如果您想要根据表1中的选择结果,再根据这个结果来确定表2中的到期日期,您可以使用 SQL 的 case 语句。

例如:

SELECT t2.id,
       CASE t1.selection
           WHEN 1 THEN t2.expiry_date + INTERVAL 7 DAY
           WHEN 2 THEN t2.expiry_date + INTERVAL 14 DAY
           WHEN 3 THEN t2.expiry_date + INTERVAL 30 DAY
           ELSE t2.expiry_date
       END AS due_date
FROM table2 t2
JOIN table1 t1 ON t2.id = t1.id
WHERE t2.id = 2;

上面的 SQL 语句选择表2中 id 属于 2 的记录,并且使用表1中的 selection 字段来确定表2中的到期日期。