【发布时间】:2013-02-18 22:07:08
【问题描述】:
我有一张桌子:
详情
--------------------------------------------------------
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
--------------------------------------------------------
如何在mysql中选择满足以下条件的不同PARENT_ID:
- DATA_KEY = '吉他' 和 DATA_VALUE = '4'
- DATA_KEY = '收音机'和 DATA_VALUE = '2'
查询的预期输出应该是
-------------
PARENT_ID
=============
1
-------------
2
-------------
因为只有 PARENT_ID 1 和 2 有 'Guitar' = '4' 和 'Radio' = '2'
【问题讨论】:
-
我已经尝试 SELECT DISTINCT PARENT_ID FROM DETAILS WHERE (DATA_KEY = 'Guitar' AND DATA_VALUE = '4') AND (DATA_KEY = 'Radio' AND DATA_VALUE = '2') 但它返回给我空数据
-
使用 OR 代替 AND(括号外的那个)
-
我已经回答了一个可以得到你想要的东西的查询。但是,我不明白为什么这对您有用。坦率地说,整个数据设置在我看来是有问题的 - 我猜想了解使用需要更多的表架构知识。
-
老兄,你的回答错了。它将返回 PARENT_ID 1,2 和 3。
-
我不会要求一些对我或可能遇到同样麻烦的人没有用的东西。无论如何感谢您的错误回答。