【发布时间】:2020-08-22 03:52:46
【问题描述】:
我有一个包含电子邮件地址列表的表格。我想选择电子邮件地址的子集,但我希望 ORDER BY 语句在电子邮件地址的域部分中轮换,每隔一个提供它们。
示例表:
+----+-------------------+-------+
| id | email | name |
+----+-------------------+-------+
| 1 | bob@gmail.com | Bob |
| 2 | tom@gmail.com | Tom |
| 3 | greg@gmail.com | Greg |
| 4 | lisa@gmail.com | Lisa |
| 5 | sally@yahoo.com | Sally |
| 6 | aaron@yahoo.com | Aaron |
| 7 | tim@yahoo.com | Tim |
| 8 | wanda@hotmail.com | Wanda |
| 9 | smith@hotmail.com | Smith |
| 10 | mark@hotmail.com | Mark |
+----+-------------------+-------+
我正在使用 substring_index(email, '@', -1) 解析电子邮件的域部分。
我会运行如下查询:
SELECT id,
email,
name
FROM emails
ORDER BY substring_index(email, '@', -1)
[something here to rotate every other result],
id ASC
我希望结果如下所示:
+----+-------------------+-------+
| id | email | name |
+----+-------------------+-------+
| 1 | bob@gmail.com | Bob |
| 8 | wanda@hotmail.com | Wanda |
| 5 | sally@yahoo.com | Sally |
| 2 | tom@gmail.com | Tom |
| 9 | smith@hotmail.com | Smith |
| 6 | aaron@yahoo.com | Aaron |
| 3 | greg@gmail.com | Greg |
| 10 | mark@hotmail.com | Mark |
| 7 | tim@yahoo.com | Tim |
| 4 | lisa@gmail.com | Lisa |
+----+-------------------+-------+
这是否可以在 ORDER BY 期间迭代项目?
任何建议/见解将不胜感激:)
【问题讨论】:
-
这几乎肯定会在您的应用层更容易处理。
-
这可以在 MySQL 8.x 中轻松完成。您使用的是 MySQL 5.x 还是 8.x?
标签: mysql loops sql-order-by email-address