Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/68.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Mysql 从表中获取所有字段,并在特定条件下标记一些字段_Mysql_Sql - Fatal编程技术网

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

Mysql 从表中获取所有字段,并在特定条件下标记一些字段,mysql,sql,Mysql,Sql,我有两个数据库表: 第一个表名为FIELDS,有以下两列: 数据类型为int 数据类型为varchar 第二个表名为SHIPPINGS,有以下两列: 数据类型为int SHIPPING\u ID其数据类型为int 我需要检索所有字段名,并标记那些在表SHIPPINGS中设置了特定SHIPPING\u ID的字段名 例如: 如果我选择SHIPPING\u ID=3,我希望收到以下结构: s_firstname true b_lastname false s_lastname false 我

我有两个数据库表:

第一个表名为
FIELDS
,有以下两列:

  • 数据类型为
    int
  • 数据类型为
    varchar
  • 第二个表名为
    SHIPPINGS
    ,有以下两列:

  • 数据类型为
    int
  • SHIPPING\u ID
    其数据类型为
    int
  • 我需要检索所有字段名,并标记那些在表
    SHIPPINGS
    中设置了特定
    SHIPPING\u ID
    的字段名

    例如:

    如果我选择
    SHIPPING\u ID=3
    ,我希望收到以下结构:

    s_firstname true
    
    b_lastname false
    
    s_lastname false
    
    我该怎么做?我尝试了以下SQL查询:

    选择pf.field\u name,ps.shipping\u id,IF(ps.shipping\u id=3,“true”,“false”)作为状态
    从'fields'作为pf LEFT连接'shippings'作为ps
    在ps.shipping_id=3上
    
    但对于所有字段,它都返回true。
    我做错了什么?

    您可以使用聚合:

    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;
    
    注意:这会将结果解释为需要布尔值。如果需要字符串,请使用
    大小写
    表达式:

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

    您可以使用聚合:

    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;
    
    注意:这会将结果解释为需要布尔值。如果需要字符串,请使用
    大小写
    表达式:

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