如果我order by
是MySQL中一个非唯一的整数字段,我会得到如下结果:
1
1
1
2
2
2
3
3
3
我不想将相似的值组合在一起,而是希望得到这样的结果:
1
2
3
1
2
3
1
2
3
我可以使用MySQL吗?
答案 0 :(得分:1)
您是否碰巧在表格中有另一列,您可以将它们分组为" 1 2 3 4" ," 1 2 3 4"等?
它看起来像这样: 第1列|第二栏 A | 1 B | 1 C | 1 D | 1 A | 2 B | 2 C | 2 D | 2
如果您按第2栏订购,它将返回1 1 1 1 2 2 2 2.但由于您有另一列,您可以按第1列,第2列进行订购,它将是1 2 1 2 1 2 1 2。
这个假设你有一个像第一列的字段。但鉴于您正在考虑让他们订购1 2 3 4 1 2 3 4,您的其他领域必须有一些可以帮助您实现这一目标的东西
希望这有帮助!
答案 1 :(得分:1)
您可以使用CROSS join
:
select t1.id from table1 t1
cross join table1 t2
group by t2.id,t1.id
答案 2 :(得分:0)
您需要在ORDER BY
语句中使用第二个字段。使用交叉连接在语法上很简单,但如果您的表有N行,则交叉连接会创建一个包含N * N行的临时表,并且会快速失控。
假设您有一个名为id
的唯一整数键字段,并且您希望以此方式排序的列为val
,您可以使用子查询来对每个值的子集进行排序(例如,所有1
值)根据其唯一的整数键值。这也需要一个自连接,但是与原始表的行数相同,因此它不会像交叉连接一样爆炸。
SELECT q.val FROM
(SELECT *, (SELECT COUNT(*) FROM tbl AS t1
WHERE t1.val = t.val AND t1.id > t.id) AS ct
FROM tbl AS t
ORDER BY ct, val) AS q;
答案 3 :(得分:-1)
不,你不能在MYSQL中这样做,因为它会订购Alpha Numeric!
是否还有另一条信息可以帮助您实现这一目标。
您目前的数据设计是什么?