3

我在 MySQL 中有一个表,其中包含以下字段:

  • 一个 id 字段
  • 文件名或为空的图片字段
  • 电话号码的相同类型的字段。

我想运行一个 if 语句来检查该行是否有图像和电话号码

对其中任何一个选择“是”都会在计数中添加一个,然后我需要按该计数对结果进行排序。

这可能吗?

IE

ID   Pic   Phone
1           231
2    img    412 
3            

然后显示的顺序将是 ID 2,1,3。

4

2 回答 2

5

如果您的picphone列为空并且为空,您可以执行

select * from your_table
order by if(pic is null, 0, 1) + if(phone is null, 0, 1) desc

如果您的picphone列是空的并且包含空字符串,您可以这样做

select * from your_table
order by if(pic = '', 0, 1) + if(phone = '', 0, 1) desc
于 2013-11-04T12:12:49.813 回答
1

我会选择以下内容:

SELECT * FROM table
ORDER BY (
  IF(pic IS NOT NULL AND pic != '', 1, 0) +
  IF(phone IS NOT NULL AND phone != '', 1, 0)
) DESC

pic这会处理or phoneareNULL或空字符串的两种情况。

于 2013-11-04T12:18:00.683 回答