键值表的"SELECT .. WHERE .. AND .."(两个条件)?

Yam*_*mel 4 mysql key-value

我正在尝试做什么

我试图让commentIdtype = xtarget = x,

通常(这是一个例子),表的结构应如下所示:

+-----------+-------+--------+
| commentId | type  | target |
+-----------+-------+--------+
|         1 | post  |      2 |
|         2 | post  |      8 |
|         3 | video |      6 |
+-----------+-------+--------+
Run Code Online (Sandbox Code Playgroud)

在这种情况下,我可以使用此查询来获取commentId:

SELECT `commentId` FROM `comment_datas` WHERE type = 'post' AND target = '2'
Run Code Online (Sandbox Code Playgroud)

真正的问题

但这是表的真实结构(使用键值设计):

+-----------+--------+-------+
| commentId |  name  | value |
+-----------+--------+-------+
|         1 | type   | post  |
|         1 | target | 2     |
|         2 | type   | post  |
|         2 | target | 8     |
|         3 | type   | post  |
|         3 | target | 6     |
+-----------+--------+-------+
Run Code Online (Sandbox Code Playgroud)

现在我不知道如何得到commentId我上面写的查询,任何想法?

jue*_*n d 5

集团由commentId.然后,您可以过滤具有至少一条记录的组,并使用您想要的条件

SELECT commentId 
FROM comment_datas 
GROUP BY commentId
HAVING sum(name = 'type' and value = 'post') > 0 
   AND sum(name = 'target' and value = '2') > 0
Run Code Online (Sandbox Code Playgroud)