【问题标题】:how to sort a column in mysql and get the sorted value of another column?如何对mysql中的一列进行排序并获取另一列的排序值?
【发布时间】:2016-07-21 13:19:10
【问题描述】:

我有一个包含三个字段的表格,

id          (int)
shortnameid (varchar)
name        (varchar)

name 包含数字和字符串,例如:(01.john)

我需要使用id 将表格排序为ASC,并获得name 列的排序顺序(在按id 排序之后)。 这将严重返回排序后的数字:

SELECT * FROM  `tablename` ORDER BY  `tablename`.`id` ASC

但我需要name 列的排序值(按id 对表进行排序后)。

【问题讨论】:

  • 你是什么意思“这会严重返回排序数字”?

标签: mysql


【解决方案1】:

添加名称列以按顺序排列

SELECT * FROM  `tablename` ORDER BY  `tablename`.`id` ASC,`tablename`.`name`;

【讨论】:

  • 但我需要名称列,它必须按 id 排序。
【解决方案2】:

你的问题不是很清楚。

select `name`
FROM 
`tablename`
ORDER BY `tablename`.`id` ASC

将仅返回name 的列表,按id ASC 排序

如果你也希望它按name 排序,那么:

select `name`
FROM 
`tablename`
ORDER BY `tablename`.`id` ASC, `tablename`.`name`

如果这个或其他答案不是您想要的,那么您需要重申您的问题。

【讨论】:

【解决方案3】:

首先..您的设计是错误的..您不满足1 Normal Form - 即不要在一列中混合多个信息..

您可以同时制作两列的主键(如果 id 不唯一):

PRIMARY KEY(id, name) 

您不需要创建额外的列来拥有独特的东西..


此外,其他答案都是正确的.. 或者没有人明白你想要什么。

这是您通过查询得到的结果:

1 Bill 1.Bill
2 AAA 2.AAA
2 ZZZ 2.ZZZ
2 BBB 2.BBB
3 AAA 3.AAA

通过执行 Mahesh Madushanka 查询,您会得到:

1 Bill 1.Bill
2 AAA 2.AAA
2 BBB 2.BBB
2 ZZZ 2.ZZZ
3 AAA 3.AAA

你还想达到什么目标?

更新

你想要这样的东西吗(根据上面给出的示例数据)?

id  |  names          | .... |
-----------------------
1   | "Bill"          |
2   | "AAA, BBB, ZZZ" |
3   | "AAA"           |

【讨论】:

  • 按 id 的升序排序并获取按 id(升序)排序的列(名称)。然后我将插入到我的应用程序的下拉列表中
  • @srirams 你的英语让你很难理解你的意思(我也不是以英语为母语的人......)。只是猜测:您是否希望每个 id 的所有名称串联在一个字符串中 - 并且这些列列表按 id 顺序提供给您?我会更新答案 - 但请给我们一些关于 mysql 输出的例子..
  • 我想按名称排序 s.no 示例 01.apple,02.mango 的前三个字母等没有.. 110.pineapple.here 我需要按前三个字母排序(数值).但在数据库中它是 varchar 类型。我是 sql qwery 的新手。帮我排序。@ otopolsky
【解决方案4】:

您可以使用相当晦涩的语法来做到这一点:

update table name
    set id = (select cnt
                    from (select count(*) as cnt
                          from table Name Name2
                          where Name2.shortnameid >= table name.shortnameid
                         )
                   )

【讨论】:

    猜你喜欢
    • 2017-04-01
    • 1970-01-01
    • 2022-11-26
    • 1970-01-01
    • 2017-11-28
    • 2016-03-24
    • 1970-01-01
    • 2018-07-04
    • 1970-01-01
    相关资源
    最近更新 更多