Php 使用REGEXP在MySQL中搜索
我正在使用如下查询创建一个搜索函数Php 使用REGEXP在MySQL中搜索,php,mysql,regex,Php,Mysql,Regex,我正在使用如下查询创建一个搜索函数 SELECT personal_info.PersonalID, personal_info.FullName FROM personal_info INNER JOIN skillset ON personal_info.PersonalID = skillset.PersonalID INNER JOIN language ON personal_info.PersonalID = language.PersonalID WHERE personal_
SELECT personal_info.PersonalID, personal_info.FullName FROM personal_info
INNER JOIN skillset ON personal_info.PersonalID = skillset.PersonalID
INNER JOIN language ON personal_info.PersonalID = language.PersonalID
WHERE personal_info.FullName LIKE '%%'
AND skillset.SkillName REGEXP 'pl|google'
AND language.Language REGEXP 'ita|vol'
HAVING COUNT(*)
这个查询返回的结果与我预期的一样,但是,当我更改它以确保
再次将skillset.Skillname REGEXP'pl | google'
更改为skillset.Skillname REGEXP'pl | adafrtesd'
当我认为它不会返回任何东西时,它返回相同的值,有人可以帮助吗?我还在学习MySQLD
我的表格结构:
技能集PersonalID| SkillName
130105 | PL
130105 |谷歌 语言
PersonalID|语言
130105|意大利
130105 | Volapuk如果不进行聚合,则无法在一个查询中比较同一表的两行。最好从MySQL中选择所有可能的有效行,并使用PHP循环数据,因为您将能够维护状态(例如,哪个人有什么技能),然后根据请求匹配最终结果 在MySQL中,您可以使用
GROUP\u CONCAT
SELECT personal_info.PersonalID, personal_info.FullName,
GROUP_CONCAT(Language ORDER BY Language) AS languages,
GROUP_CONCAT(SkillName ORDER BY SkillName) AS skills
FROM personal_info
JOIN skillset ON personal_info.PersonalID = skillset.PersonalID
JOIN language ON personal_info.PersonalID = language.PersonalID
AND skillset.SkillName REGEXP 'pl|google'
AND language.Language REGEXP 'ita|vol'
GROUP BY PersonalID
HAVING
skills LIKE '%pl%' AND skills LIKE '%google%'
正则表达式中的
|
表示或。所以'pl | google'
和'pl | adafrtesd'
都将匹配'pl'
。这是错的吗?你是在尝试匹配其他东西吗?你想做什么?@Xtrader你刚才写的有什么问题吗?你想具体做什么?