从表中获取所有字段,并在特定条件下标记一些字段

4uqofj5v  于 2021-07-24  发布在  Java
关注(0)|答案(1)|浏览(259)

我有两个数据库表:
第一个表命名为 FIELDS 有以下两列: FIELD_ID 其数据类型为
int FIELD_NAME 其数据类型为 varchar 第二个表命名为 SHIPPINGS 有以下两列: FIELD_ID 其数据类型为
int SHIPPING_ID 其数据类型为 int 我需要检索所有字段名,并标记那些具有特定 SHIPPING_ID 在表格中设置 SHIPPINGS .
例子:


如果我愿意 SHIPPING_ID = 3 ,我希望收到以下结构:

s_firstname true

b_lastname false

s_lastname false

我该怎么做?我尝试了以下sql查询:

SELECT pf.field_name, ps.shipping_id, IF(ps.shipping_id = 3, "true", "false") AS status
FROM `fields` AS pf LEFT JOIN `shippings` AS ps
ON ps.shipping_id = 3

但对于所有字段它都返回true。我做错了什么?

vfwfrxfs

vfwfrxfs1#

可以使用聚合:

select f.*, (s.field_id is not null) as has_3
from fields f left join
     shippings s
     on f.field_id = s.field_id and s.shipping_id = 3;

注意:这将结果解释为需要一个布尔值。如果你想要一个字符串,那么使用 case 表达式:

select f.*,
       (case when s.field_id is not null then 'true' else 'false end) as has_3

相关问题