2013-03-20 70 views
-4

我有一個表來存儲動態屬性如何編寫一個sql來獲取這個動態表中的記錄?

的結構是這樣的:

id itemid value 
---- ------ ------ 
1  1  A 
2  2  B 
3  3  C 
4  1  B 
5  2  C 

因此,當我通過多值參數

  • 通行證值A B結果爲itemid 1
  • 傳遞值B結果itemid 1 2
  • 通價值B C結果2

如何我寫這篇文章的SQL? 順便說一句,我使用mysql

+3

可以使問題請更清楚一點?還包括你到目前爲止嘗試過的。 – 2013-03-20 14:07:59

+0

@Teifi對不起,我用ipad發表這個話題,它很難編輯,我只是​​想怎麼寫sql,我真的不知道如何選擇在這張表 – chanjianyi 2013-03-20 14:12:26

+2

-1使用iPad。 – Kermit 2013-03-20 14:16:16

回答

2

假設(itemid, value)UNIQUE約束:

SELECT itemid 
FROM tableX 
WHERE value IN ('A', 'B')  -- the list 
GROUP BY itemid 
HAVING COUNT(*) = 2 ;   -- the size of the list 
1

你應該能夠得到你正在尋找使用SQL INTERSECT查詢的行爲。這裏是一個簡單的例子。

選擇的itemid FROM MYTABLE其中value = 'A' INTERSECT 選擇的itemid FROM MYTABLE其中value = 'B'

+0

Thx但我在谷歌搜索這個功能,它似乎只爲甲骨文?我使用mysql – chanjianyi 2013-03-20 14:29:30

+0

這可能有所幫助:http://stackoverflow.com/questions/2621382/intersect-in-mysql – 2013-03-20 14:31:55

相關問題