1

次のデータを含むMySQLテーブル(meta_table)があるとします。

meta_id,post_id,meta_key,meta_value
5,10,my_key1,value1
10,11,my_key2,value2
15,12,my_key3,value3
35,11,my_key4,value4

meta_valueがvalue2およびvalue4の場合、どうすればpost_idを取得できますか(答えは11である必要があります)。私はこれを試しました:

SELECT post_id from meta_table where meta_value='value2' and meta_value='value4' 

ただし、post_idとして11は返されません。助言がありますか?

4

5 に答える 5

2
SELECT post_id
from meta_table 
where meta_value IN ('value2', 'value4')
GROUP BY post_id
HAVING COUNT(*) = 2;

SQLフィドルデモ

于 2012-12-03T09:07:20.680 に答える
2

結合すると:

SELECT a.post_id
FROM meta_table AS a
JOIN meta_table AS b ON a.post_id = b.post_id
WHERE a.meta_value = 'value2' AND b.meta_value = 'value4'

http://www.sqlfiddle.com/#!2/96d2b/4/0

于 2012-12-03T09:08:46.607 に答える
1

使ってみてくださいOR

SELECT post_id from meta_table where meta_value='value2' OR meta_value='value4'

またはあなたは使用することができますIN

SELECT post_id from meta_table where meta_value IN ('value2', 'value4')
于 2012-12-03T09:07:04.160 に答える
0

そのはず :

SELECT post_id from meta_table where meta_value='value2' or meta_value='value4'

于 2012-12-03T09:06:59.140 に答える
0

クエリは: -

SELECT post_id from meta_table
where meta_value='value2' or meta_value='value4'
GROUP BY post_id
于 2012-12-03T09:08:47.067 に答える