Php 根据所选语言对记录进行排序
我在使用PHP时遇到了排序问题,这里的mysql查询是表结构 用户表: 用户ID、用户名、电子邮件 语言表: 兰吉德,兰吉德 用户语言表: 用户标识 我使用下面的查询来获得结果Php 根据所选语言对记录进行排序,php,mysql,Php,Mysql,我在使用PHP时遇到了排序问题,这里的mysql查询是表结构 用户表: 用户ID、用户名、电子邮件 语言表: 兰吉德,兰吉德 用户语言表: 用户标识 我使用下面的查询来获得结果 SELECT users.* COUNT(*) AS languages FROM userLanguages JOIN users ON users.userId=userLanguages.userId WHERE langId IN(1,4) GROUP BY userId ORDER BY langua
SELECT
users.*
COUNT(*) AS languages
FROM userLanguages JOIN users ON users.userId=userLanguages.userId
WHERE langId IN(1,4)
GROUP BY userId
ORDER BY languages
现在的问题是记录没有按照搜索的语言进行排序
例如:
搜索:英语、法语
结果应按以下顺序排序
1.英语和法语
2.只有英语还是法语
3.英语和其他语言,或法语和其他语言(如有)
如果有人帮助我解决这个问题,我将非常感谢
谢谢。您可以尝试在langName上订购字母卡
SELECT users.* COUNT(*) AS languages FROM userLanguages JOIN users ON users.userId=userLanguages.userId JOIN languages ON languages.langID=userLanguages.langId WHERE langId IN(1,4) GROUP BY userId ORDER BY languages.langName
但如果您想要其他订单,可能需要在langagues.table中添加一个“订单”列
(“order”在mysql中是一个保留字,但您可以将其命名为“ordering”)您确定这是您的查询吗?您在GROUPBY子句中拼错了
userId
。您还可以按语言排序,这是用户拥有的语言数量,而不是他们拥有的语言。根据您的特定排序顺序,您可能希望查看联合。谢谢James是的,这是我的查询,它可能拼写错误,因为实际的表有许多列,我只是手动修改它以使其易于理解,并考虑按语言排序,因为没有其他解决方案提供最佳匹配,您是对的,你能给我一些想法或例子来说明我是如何做到这一点的吗?我恐怕这些天我对MySQL做的不多,但我可能会提供一个t-SQL的答案,这将非常接近最终的解决方案。你能告诉我们更多关于你的搜索吗?用户是否选择了一种或多种语言,如果选择了多种语言,则会根据您的上述规则返回搜索结果?