MySQL:选择具有适用于多行的条件的记录

Mac*_*ato -1 mysql sql select row

我有一张桌子:

细节

--------------------------------------------------------
ID    |   PARENT_ID    |    DATA_KEY     |   DATA_VALUE
======================================================== 
1     |      1         |     Guitar      |      4
--------------------------------------------------------
2     |      1         |     Radio       |      2
--------------------------------------------------------
3     |      1         |     Tv          |      2
--------------------------------------------------------
4     |      1         |     Drum Kit    |      3
--------------------------------------------------------
5     |      2         |     Guitar      |      4
--------------------------------------------------------
6     |      2         |     Radio       |      2
--------------------------------------------------------
7     |      2         |     Tv          |      2
--------------------------------------------------------
8     |      2         |     Drum Kit    |      3
--------------------------------------------------------
9     |      3         |     Guitar      |      1
--------------------------------------------------------
10    |      3         |     Radio       |      2
--------------------------------------------------------
11    |      3         |     Tv          |      2
--------------------------------------------------------
12    |      3         |     Drum Kit    |      3
--------------------------------------------------------
Run Code Online (Sandbox Code Playgroud)

我如何在 mysql 中选择满足以下条件的不同 PARENT_ID:

    1. DATA_KEY = '吉他' 且 DATA_VALUE = '4'
    1. DATA_KEY = '无线电' 且 DATA_VALUE = '2'

查询的预期输出应该是

-------------
PARENT_ID
=============
  1
-------------
  2
-------------
Run Code Online (Sandbox Code Playgroud)

由于只有 PARENT_ID 1 和 2 具有 'Guitar' = '4' 和 'Radio' = '2'

Mik*_*rov 5

SELECT DISTINCT a.parent_id 
FROM details AS a
JOIN details AS b ON a.parent_id=b.parent_id
WHERE a.data_key='Guitar' AND a.data_value='4' AND
      b.data_key='Radio' AND b.data_value='2';
Run Code Online (Sandbox Code Playgroud)