sql mysql select column IF


sql mysql select column IF

我想选择f.field_node_tax_inception_tid只有a.rid = 5,我怎么能做到这一点?因为如果没有if,它会显示大量的结果,distinct不起作用。

SELECT DISTINCT c.couponid, c.id, y.tid, f.field_node_tax_inception_tid
                FROM `users_roles` a, `field_data_field_ypefthinos` b, `custom_redemptions` c, `field_data_field_chain_manager` e, `field_data_field_node_tax_inception` f, `field_data_field_brand_manager` j, `field_data_field_brand_node_ref` k, `field_data_field_product_ref` i, `field_data_field_company_manager` z, `field_data_field_brand_company` t, `taxonomy_term_data` y
                WHERE a.uid = ?
                AND
                (a.rid = 4
                AND b.field_ypefthinos_uid = a.uid
                AND b.entity_id = c.branchid)
                OR
                (a.rid = 5
                AND e.field_chain_manager_uid = a.uid
                AND e.entity_id = f.entity_id
                AND f.field_node_tax_inception_tid = c.chainid
                AND f.field_node_tax_inception_tid = y.tid)
                OR
                (a.rid = 9
                AND j.field_brand_manager_uid = a.uid
                AND j.entity_id = k.field_brand_node_ref_nid
                AND k.entity_id = i.field_product_ref_nid
                AND i.entity_id = c.couponid)
                OR
                (a.rid = 6
                AND z.field_company_manager_uid = a.uid
                AND z.entity_id = t.field_brand_company_nid
                AND t.entity_id = k.field_brand_node_ref_nid
                AND k.entity_id = i.field_product_ref_nid
                AND i.entity_id = c.couponid)

用例

case a.rid when 5 then f.field_node_tax_inception_tid when 5 else null end
select IF(a.rid = 5,f.field_node_tax_inception_tid,null)