我搜索了一下,发现可以使用带有||的substr或带有格式说明符的printf语句来向结果添加填充,但是如果在sqlite查询中使用DISTINCT,似乎就不起作用了。
我有一个名为timeLapse的表,它看起来像这样:
+----+-------+-----------+
| ID | Time | Status |
+----+-------+-----------+
| 1 | 0.001 | Initiated |
| 1 | 0.002 | Cranked |
| 3 | 0.002 | Initiated |
| 2 | 0.002 | Initiated |
| 2 | 0.003 | Cranked |
+----+-------+-----------+我可以使用类似于SELECT distinct(ID) FROM timeLapse as IDs的内容来查询不同的ID,它返回以下内容:
+-----+
| IDs |
+-----+
| 1 |
| 2 |
| 3 |
+-----+但是,我想像这样填充不同的行:
+----------+
| IDs |
+----------+
| Object-1 |
| Object-2 |
| Object-3 |
+----------+我的查询SELECT substr('Object-' || DISTINCT(ID), 10, 10) as IDs FROM timeLapse会导致错误:"[17:22:47] Error while executing SQL query on database 'machining': near "distinct": syntax error"
有没有人能帮我弄明白我到底做错了什么?我非常感谢您的时间和帮助。
发布于 2019-11-28 14:52:15
所有积分都归于名为ϻᴇᴛᴀʟ的用户,因为我只从他们的回答中了解到,我应该在这个查询中有一个子查询,DISTINCT应该进入的位置。
这解决了我的问题:
select printf('Object-%s', t1.ID) as IDs
FROM (SELECT DISTINCT(id) ID FROM timeLapse) t1发布于 2019-11-28 14:31:00
在使用substr()函数之前,请先获取distinct()。
select substr('Object-' || t1.ID, 1, 10) as IDs
from (SELECT DISTINCT(ID) ID FROM timeLapse) t1请参阅sqlfiddle
https://stackoverflow.com/questions/59082919
复制相似问题