为了账号安全,请及时绑定邮箱和手机立即绑定

过滤mysql中的行,有可能获得更多值

过滤mysql中的行,有可能获得更多值

PHP
阿波罗的战车 2022-10-28 15:07:59
我是 PHP 和 MySQL 的新手,我遇到了一些问题。例如,在这里我想显示所有可以使用 Wordpress、Joomla 和 Typo3 的人......在这种情况下,它应该只显示 Mustermann 夫人我试过 WHERE name='joomla' OR name='wordpress' OR name='错字3',但它显示了可以与这三个中的任何一个一起工作的人......对不起我的英语不好编辑OP 说明:提供示例数据并不难,无论发布图像多么“容易”,这都不重要 nachname    vorname  email                name        id ---------   -------  -------------------  ---------- ---  Mustermann  Mrs                           joomla     148  Mustermann  Mrs                           wordpress  148  Mustermann  Mrs                           typo3      148  Mustermann  Muster   mustermann@gmail.de  wordpress  158  Mustermann  Muster   mustermann@gmail.de  typo3      158SELECT t.*  FROM ( SELECT 'Mustermann' AS nachname,'Mrs' AS vorname,'' AS email,'joomla' AS NAME,'148' AS id         UNION ALL SELECT 'Mustermann','Mrs','','wordpress','148'         UNION ALL SELECT 'Mustermann','Mrs','','typo3','148'         UNION ALL SELECT 'Mustermann','Muster','mustermann@gmail.de','wordpress','158'         UNION ALL SELECT 'Mustermann','Muster','mustermann@gmail.de','typo3','158'       ) t
查看完整描述

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 ...),这样会更有效率。


查看完整回答
反对 回复 2022-10-28
?
繁星点点滴滴

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'

;


查看完整回答
反对 回复 2022-10-28
  • 2 回答
  • 0 关注
  • 58 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信