根据条件获取输出并创建新列并根据 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';
如果您想要 true
和 false
作为字符串:
(CASE WHEN d.user_id IS NOT NULL THEN 'true' ELSE 'false' END)
我们有两个 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';
如果您想要 true
和 false
作为字符串:
(CASE WHEN d.user_id IS NOT NULL THEN 'true' ELSE 'false' END)