【发布时间】:2022-07-30 21:21:41
【问题描述】:
我对 SQL 很陌生,我想了解,当表具有重复的姓氏时,如何按字母顺序从表中获取 下一个用户?目前,我已设法按字母顺序浏览列表,但它会跳过重复的名称或陷入永久循环。
有什么建议我应该做/研究来修复我的 SQL 查询中的逻辑吗?
ID > ID - 如果用户 ID 较低,将跳过该用户:
SELECT formID FROM table
WHERE formID > ? AND
lastName >= (SELECT lastName FROM table WHERE formID = ?) ORDER BY lastName ASC"
ID 如果姓氏相同,ID 将导致永远循环:
SELECT formID FROM table
WHERE formID <> ? AND lastName >= (SELECT lastName FROM table WHERE formID = ?)
ORDER BY lastName ASC"
| ID: (column) | Last name: (column) | Query #1 | Query #2 |
|---|---|---|---|
| 13 | Aaron | OK | OK |
| 64 | Billy | OK | OK |
| 42 | Bob | Skip | OK |
| 83 | Smith | Ok | Loop |
| 97 | Smith | Ok | Loop |
编辑:似乎我设法通过稍微修改我的 SQL 代码找到了解决问题的方法。虽然我不太确定使用 LIMIT 1 是否对我的查询有任何更改。
SELECT formID FROM table
WHERE
lastName > (SELECT lastName FROM table WHERE formID = ? )
OR lastName = (SELECT lastName FROM table
WHERE formID = ?)
AND formID <> ? ORDER BY lastName ASC LIMIT 1"
【问题讨论】: