Php 根据是否输入信息对MYSQL中的多个文本字段进行排序
我有一个专家表,其中包含的字段有Php 根据是否输入信息对MYSQL中的多个文本字段进行排序,php,mysql,sorting,Php,Mysql,Sorting,我有一个专家表,其中包含的字段有expert\u description,company\u description,expert\u website,expert\u email,company\u website 这些字段不是必需的,因此它们可能是NULL 搜索表时,大多数非空字段的条目应排在第一位 例如,有四个用户: user1:谁为所有5个字段输入了信息 user2:谁只为1个字段输入了信息 user3:谁只为4个字段输入了信息 user4:谁只为3个字段输入了信息 结果应该是 用户1
expert\u description
,company\u description
,expert\u website
,expert\u email
,company\u website
这些字段不是必需的,因此它们可能是NULL
搜索表时,大多数非空字段的条目应排在第一位
例如,有四个用户:
我建议您在用户表中创建一个字段,用于存储已填充字段的计数 每次用户添加/删除字段时,都应更新此列
然后您只需按“fieldcount”列进行排序。如果空字段的值为空,您可以使用类似的方法
SELECT expert_description, company_description, expert_website, expert_email, company_website,
((expert_description IS NULL) + (company_description IS NULL) + (expert_website IS NULL) + (expert_email IS NULL) + (company_website IS NULL)) AS empty_count
FROM experts
WHERE 1
ORDER BY empty_count;
将返回1
如果字段的值为NULL
,否则将返回0
使用此查询:
SELECT user FROM your_table
ORDER BY expert_description DESC, company_description DESC,
expert_website DESC, expert_email DESC, company_website DESC;
谢谢。这对我很有用
select * from table
order by if(field = '' or field is null,1,0),field
从@Rossco推荐的链接中得到了这个答案。你尝试了什么SQL?我尝试了字段上的字符长度函数,但它没有达到我的预期效果。我可以问一下为什么我的2个声誉点会被扣掉吗。让我知道我的错误,所以我可以在将来处理它。我怀疑你的问题没有任何SQL代码的尝试。Hi @维韦克,你的逻辑是正确的,但它会产生错误,请考虑一些变化:<代码>选择ExtExtDead,Apple Yoad Dead,Excel网站,Excel电子邮件,PosiySyWeb网站((ExtExtType描述为NULL))。+(公司\说明为空)+(专家\网站为空)+(专家\电子邮件为空)+(公司\网站为空))作为专家订单的空\计数按空\计数代码>。只需添加括号并更改订单即可。:)谢谢您的纠正!编辑了我的答案。您又忘记了顺序:)