根据条件获取输出并创建新列并根据 SQL 中的条件更新它

Getting an output based on conditions and creating a new column and updating it based on a condition in SQL

我们有两个 tables:“骑手”和“drivers”。一些车手也是 driver,因此会出现在两个 table 上。每个 table 看起来像这样:

Table 车手

City | user_id | signup_date
SF   | u1      | 3/12
CH   | u2      | 12/12
SF   | u3      | 5/10

我试过这个代码:

SELECT riders.id, 'flag' as flag FROM riders INNER JOIN drivers ON riders.id = drivers.id where riders.City ='SF';

编写一个输出所有 SF 骑手的查询,并添加一个名为“flag”的列,如果骑手也是 SF,则打印“true”driver,如果骑手不是 SF,则打印“false”driver.

我的输出应该看起来像一列 user_id 和标志

user_id | flag
u1      | true    if u1 is also in Table 'drivers'
u3      | false   if u3 is not in Table 'drivers' but in City SF

您的方向是正确的,但是您的查询有两个问题:

  • flag的定义只是一个常量
  • 您的 join 条件不正确。

您需要 JOIN user_id 上的 table,然后检查第二个 table:

是否匹配
SELECT r.user_id, (d.user_id is not null) as flag
FROM riders r LEFT JOIN
     drivers d
     ON r.user_id = d.user_id
WHERE riders.City = 'SF';

如果您想要 truefalse 作为字符串:

(CASE WHEN d.user_id IS NOT NULL THEN 'true' ELSE 'false' END)