Php 根据所选语言对记录进行排序

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

我在使用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 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的答案,这将非常接近最终的解决方案。你能告诉我们更多关于你的搜索吗?用户是否选择了一种或多种语言,如果选择了多种语言,则会根据您的上述规则返回搜索结果?