Using same column multiple times in WHERE clause

前端 未结 8 772
醉话见心
醉话见心 2020-12-15 10:19

I have a following table structure.

USERS

PROPERTY_VALUE

PROPERTY_NAME

USER_

8条回答
  •  慢半拍i
    慢半拍i (楼主)
    2020-12-15 10:41

    SELECT *
      FROM users u
     WHERE u.id IN(
             select m.user_id
               from property_value v
               join USER_PROPERTY_MAP m
                 on v.id=m.property_value_id 
              where (v.property_name_id, v.value) in( (1, '101'), (2, '102') )
              group by m.user_id
             having count(*)=2
          )
    

    OR

    SELECT u.id
      FROM users u
     INNER JOIN user_property_map upm ON u.id = upm.user_id
     INNER JOIN property_value pv ON upm.property_value_id = pv.id
     WHERE (pv.property_name_id=1 and pv.value='101')
        OR (pv.property_name_id=2 and pv.value='102')
     GROUP BY u.id
    HAVING count(*)=2
    

    No property_name table needed in query if propery_name_id are kown.

提交回复
热议问题