当前位置: 首页 > 知识库问答 >
问题:

MySql从最低位到最高位选择DISTINCT[关闭]

殷功
2023-03-14

我有2个使用distince的测试查询,但这两个查询都没有正确排序数据。执行以下语句后:

第一个查询

SELECT DISTINCT(diameters) 
  FROM prometheus 
 WHERE category_id = '$category_id' 
 ORDER 
    BY position ASC

第二次查询

SELECT DISTINCT diameters
     , MAX(position) 
  FROM prometheus 
 WHERE category_id = '$gategorys_id' 
 GROUP 
    BY diameters 
 ORDER 
    BY MAX(position) DESC
     , diameters

我正在从数据库中获取以下值:

第一个结果

 1700
 1800
 1900
 2000
 400
 500

第二个结果

500
400
2000
1900
1800
1700

我想要这样的东西

400
500
1700
1800
1900
2000 

我的数据

CREATE TABLE `prometheus` ( 
    `id` int(11) NOT NULL AUTO_INCREMENT,
    `category_id` int(11) DEFAULT NULL,
    `diameters` varchar(255) DEFAULT NULL,
    `caption` varchar(255) DEFAULT NULL,    
    `position` int(3) NOT NULL,
  PRIMARY KEY (`id`)
)DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci;


id |category_id| diameters | caption       | position | 
-------------: | :-------- | :------------ | :--------| 
1  | 10017     |   400     | Alferdo 400   | 1        |    
2  | 10017     |   500     | Alferdo 500   | 2        |     
3  | 10017     |  1700     | Alferdo 1700  | 3        |     
4  | 10017     |  1800     | Alferdo 1800  | 4        |  

共有2个答案

燕元明
2023-03-14

解决方案

我将直径varchar(255)DEFAULT null更改为int(11)NOT null,并且两个查询都正确排序。

冯阳云
2023-03-14

Select*from(从prometheus中选择DISTINCT DIADER,MAX(position),其中CATEGORYS_ID='$GATEGORYS_ID'按DIADER分组按MAX(position)DESC,DIADER)DISTIDER按DISTIDER排序。position

 类似资料:
  • 问题内容: 我想按从高到低的顺序进行排序。 问题答案: java.util.Collections.sort(列表,比较器) 您将需要写一个

  • 我有一张叫‘宽床单’的桌子。这是一个班级学生所有学科总分的汇总之处。 通过此查询获得了每个主题的总数 并用此显示 而总体总数显示为 一切都很顺利,直到我不得不对表格进行排序,从总分最高到最低。表现在应该如下所示: 我真的被困住了。我从这里怎么走? 好吧,按照@titi的建议,我做了一个group_by查询,得出了这样的结果: 如果这是正确的,我如何显示它?

  • 问题内容: 我想找到设置为的最高有效位。我已经从尝试一切可能的方式来进行或运算所有的位从到和它不工作。 就像我想拥有一样。 问题答案: 如果您坚持直接使用按位运算符,则可以尝试如下操作: 我们将掩码初始化为,因为它表示1后跟31 0。我们使用该值来测试索引31(第32个点)是否为1。当将此值与一起使用时,除非在中设置了相应的位,否则将得到0 。如果是这种情况,我们返回。如果不是,则将掩码向右移动1

  • 问题内容: 我想在名为 id的 列( 主键)中 从MySQL数据库中选择最后50行。目标是行应该被分类 ID 在 ASC 秩序,这就是为什么这个查询不工作 同样值得注意的是,可以对行进行操作(删除),这就是为什么以下查询也不起作用的原因 问题 :如何从MySQL数据库中检索可以操纵并按ASC顺序排列的最后N行? 问题答案: 您可以使用子查询来做到这一点: 这将从中选择 最后 50行,然后按升序对其

  • 问题内容: 假设有工资表: 我目前正在使用此代码(AutoIT脚本: 因此,如果Hour_number在低小时或高小时之间,那两个查询是完美的。我需要某种查询,它基本上会执行以下操作: 然后将其重复为“默认”,因为找不到该员工。 补充:如果仅通过1个查询未找到$ Employee,是否可以尝试使用“ Default”? 问题答案: 如果仅通过1个查询未找到$ Employee,是否可以尝试使用“

  • 我的数据库中有一个类似这样的表:ID | datetime | value1 | value2 | value3 现在,我想选择datetime、value1、value2和value3,其中value1是每天的最低值(MIN(value1))。以下示例(箭头指示需要选择的行): 我有以下疑问: 这给了我一个结果,但不是我所期望的。datetime和value2、value3不来自找到每日最小值的