[英]MySQL Select/Join Multiple Row in User Meta Table
我有一個名為user_meta
的表,它包含如下數據:
---------------------------
| user_id | field | value |
---------------------------
| 1 | 1 | Green |
| 1 | 2 | Square |
| 1 | 3 | Big |
| 2 | 1 | Red |
| 2 | 2 | Square |
| 2 | 3 | Small |
----------------------------
field
列是用戶個人資料中表單字段的編號。 value
列是用戶通過表單提交的值。
如何編寫一個MySQL查詢以返回所有具有“綠色大方塊”的用戶?
謝謝!
這將返回您想要的結果。 這使用WHERE
子句返回所有具有所需值的記錄,然后對不同值進行計數以確保只有3個:
select user_id
from user_meta
where value in ('Green', 'Square', 'Big')
group by user_id
having count(distinct value) = 3
如果您堅持使用該模式,則可以使用子查詢。 但這不會很快。
select userid
from user_meta
where user_id in (
select user_id from user_meta
where (field = 1 and value = 'Green')
)
and user_id in (
select user_id from user_meta
where (field = 2 and value = 'Square')
)
and user_id in (
select user_id from user_meta
where (field = 3 and value = 'Big')
)
SELECT user_id FROM user_meta user_meta1 JOIN user_meta user_meta2 ON user_meta1.UserID = user_meta2.UserID JOIN user_meta user_meta3 ON user_meta2.UserID = user_meta3.UserID WHERE user_meta1.value = 'Green' AND user_meta2.value='Square' AND user_meta3.value='big'
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.