[英]MySQL - Select userid from table if it appears in multiple rows
不幸的是,我不太確定該如何措辭,因此它可能在其他地方得到了回答,但我找不到。 無論如何,這似乎是一個簡單的問題。 我可以想到一些漫長的方法,但是考慮到我對SQL還是很陌生,所以我並不懷疑哪種方法最有效。
以下是我擁有的數據的示例:兩個聯接表。
-------------------------------------------------------
userid attributeid attributename attributetype
-------------------------------------------------------
1 1 Python Skill
1 5 C++ Skill
1 2 London Location
2 1 Python Skill
2 3 Warsaw Location
3 4 MySQL Skill
3 2 London Location
問題:基本上,我想以具有技能(“ Python”或“ MySQL”)和位置“ London”的用戶的ID結尾。
因此,在此示例中,我將得到用戶ID 1和3。
有什么想法嗎? 如果以前已解決過此問題,請直接將我指向其他地方。
這可以幫助您:
select userid from tag where attributetype='Skill' AND
attributename IN ('Python','MySQL') AND userid IN
(select distinct(userid) from tag where
(attributetype='Location' AND attributename='London'))
這是一個基本查詢,可以為您提供所需的結果:
SELECT `userid`
FROM `table_name_goes_here`
WHERE (`attributename` IN ('Python', 'MySQL') AND `attributetype` = 'Skill')
AND (`attributename` IN ('London') AND `attributetype` = 'Location')
GROUP BY `userid`
您可以使用自我聯接,一個用於attributetype
是Skill,另一個用於attributetype
是Location,然后調整attributename
的條件
select t.*
from t
join t t1 on(t.userid= t1.userid)
where t.attributetype ='Skill'
and t1.attributetype ='Location'
and t.attributename in('Python','MySQL')
and t1.attributename = 'London'
SELECT userId
FROM table
WHERE attributename = 'London'
AND attributename in ('MySQL', 'Python')
看起來您具有帶有用戶和屬性表的標准設置。 試試這個查詢:
SELECT userid
FROM users
WHERE EXISTS
(SELECT 1
FROM attributes
WHERE users.userid = attributes.userid
AND attributetype = 'Skill'
AND attributename IN ('Python',
'MySQL'))
AND EXISTS
(SELECT 1
FROM attributes
WHERE users.userid = attributes.userid
AND attributetype = 'Location'
AND attributename = 'London')
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.