2 回答
TA貢獻1155條經驗 獲得超0個贊
一個典型的解決方案用于group by聚合具有相同 的行nachname,然后使用having子句進行過濾:
select nachname
from mytable
where name in ('joomla', 'wordpress', 'typo3')
group by id, nachname
having count(distinct name) = 3
我假設這id是 的唯一標識符nachname,所以我將它添加到group by子句中;如果不是這種情況,請隨時將其刪除。
此查詢為您提供適用于列表nachname中所有三個值的 s 。in
name通過修改in列表和目標計數,很容易使查詢適應更多(或更少) s。
如果表中沒有重復(nachname, name)的重復項,可以使用count(*)而不是count(distinct ...),這樣會更有效率。
TA貢獻1803條經驗 獲得超3個贊
您可以使用下一個查詢來解決您的問題:
SELECT
nachname, vorname, email,
CONCAT(s1.name,' ', s2.name,' ', s3.name) as skills,
user.id
FROM user
JOIN userskill ON user.id = userskill.userid
-- each of joins filter by demand skillname
JOIN skill s1 ON userskill.skillid=s1.id and s1.name = 'Wordpress'
JOIN skill s2 ON userskill.skillid=s1.id and s2.name = 'Joomla'
JOIN skill s3 ON userskill.skillid=s1.id and s3.name = 'Typo3'
;
- 2 回答
- 0 關注
- 99 瀏覽
添加回答
舉報
