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 关注
- 58 浏览
添加回答
举报