我有一个包含三个字段的表,
id (int)
shortnameid (varchar)
name (varchar)
name
包含数字和字符串,例如:(01.john)
我需要使用id
将表排序为ASC,并获取name
列的排序顺序(按id
排序后)。
这将返回严重的已排序数字:
SELECT * FROM `tablename` ORDER BY `tablename`.`id` ASC
但是我需要id
列的排序值(在按name
排序之后)。
答案 0 :(得分:1)
按名称
添加名称列SELECT * FROM `tablename` ORDER BY `tablename`.`id` ASC,`tablename`.`name`;
答案 1 :(得分:0)
你的问题不是很清楚。
select `name`
FROM
`tablename`
ORDER BY `tablename`.`id` ASC
将仅返回name
的列表,按id
ASC
如果您希望按name
排序,则:
select `name`
FROM
`tablename`
ORDER BY `tablename`.`id` ASC, `tablename`.`name`
如果这个或其他答案不符合您的要求,那么您需要重申您的问题。
答案 2 :(得分:0)
首先..你的设计是错误的......你不满足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" |
答案 3 :(得分:0)
您可以使用相当神秘的语法执行此操作:
update table name
set id = (select cnt
from (select count(*) as cnt
from table Name Name2
where Name2.shortnameid >= table name.shortnameid
)
)