簡體   English   中英

MySQL在用戶元表中選擇/加入多行

[英]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

參見帶有演示的SQL Fiddle

如果您堅持使用該模式,則可以使用子查詢。 但這不會很快。

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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM