当前位置: 首页 > 面试题库 >

在MYSQL中按FIELD排序

倪子晋
2023-03-14
问题内容

我正在努力解决这个问题。我有这样一张桌子。

    +-------------+-------+
    | type        | COUNT |
    +-------------+-------+
    | A           |     1 |
    | C           |     5 |
    | B           |     4 |
    +-------------+-------+

我想查询表,结果必须是这样。

+-------------+-------+
| type        | COUNT |
+-------------+-------+
| A           |     1 |
| B           |     5 |
| C           |     9 |
| D           |     0 |
+-------------+-------+

查询:

select type , COUNT from TABLE order by FIELD(type,'A','B','C','D') ;

如果该列的type值为’A,B,C,D’,则可以正常工作。在某些情况下,FIELD('A','B','C','D')某些列的顺序可能在table中没有价值。在这种情况下,我想为其设置0并构造一个结果。

表中没有D。因此,将其设置为“ 0”。

显示创建表输出

CREATE TABLE `Summary` (
  `TIMESTAMP` bigint(20) NOT NULL DEFAULT '0',
  `type` varchar(50) NOT NULL DEFAULT '',
  `COUNT` bigint(19) NOT NULL,
  PRIMARY KEY (`TIMESTAMP`,`type`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8

问题答案:

怎么这样:

select a.col as type,coalesce (`COUNT`,0) as `count`
from 
(select 'A' as col union all
select 'B' as col union all
select 'C' as col union all
select 'D' as col )a
left join Table1 T
on a.col=T.type
order by FIELD(a.col,'A','B','C','D') ;


 类似资料:
  • 问题内容: 如何按包含星期几名称的varchar列排序mysql结果? 请注意,MONDAY应该排在第一位,而不是SUNDAY。 问题答案: 根据Williham Totland的建议重新设计该列,或者进行一些字符串解析以获取日期表示形式。 如果该列 仅 包含星期几,则可以执行以下操作:

  • 问题内容: 有一个字段’noticeBy’枚举(’email’,’mobile’,’all’,’auto’,’nothing’)NOT NULL默认’auto’。众所周知,按ENUM字段排序相对于其索引执行。但是,如何通过其值进行排序? 问题答案: 如“ 排序”中所述: 值根据其索引号排序,索引号取决于列规范中列出的枚举成员的顺序。例如,在for 之前排序。空字符串排在非空字符串之前,值排在所有其

  • 问题内容: 我有一张桌子:“ ID名称c_counts f_counts” 我想按顺序排序所有记录, 但这不起作用: 问题答案: 别忘了,如果要混合使用分组(即SUM)字段和非分组字段,则需要对非分组字段之一进行GROUP BY。 尝试这个: 或这个: 而且,您始终可以执行以下派生查询: 许多可能性!

  • 问题内容: 是否可以按某个列以及RAND()对结果集进行排序? 例如: 谢谢你。 问题答案: 您正在执行的操作是有效的-它将按降序对结果进行排序,但会随机化领带的顺序。 但是,要执行所需的操作,您首先需要使用子查询来获取最新的100条记录,然后再使用外部查询对该子查询的结果进行随机排序:

  • 问题内容: 我有一个数字列表:(这是现有记录的ID) 我有一个带有列和的mysql表,其中是整数主键。我想从该表中选择的记录,但在一个特定的顺序,例如,,,,,。 是否可以在MyISAM的查询中执行此操作,而无需任何后处理? 最简单的方法是什么? 问题答案: 由于,一个简单就足够了。 但是,如果您要这样订购:,则可以使用function : 如果查询匹配的行多于您列出的行 返回时,行不匹配任何您列

  • 问题内容: 某些SQL Server允许使用通用语句,例如。我认为这不适用于MySQL,是否有任何这样的解决方法可以跨多个表进行自动选择,还是需要使用查询查询来确定主键? 我一直在解决的方法是在运行查询之前调用。有更有效的方法吗?在选择过程中,MySQL可以确定表的主键吗? 更新: 正如Gordon所指出的那样,通常在MySQL或SQL中没有官方的方式来执行此操作。SAP具有自定义功能。有一些解决