簡體   English   中英

MySQL-如果表中出現多行,請從表中選擇用戶ID

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

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