填充到DISTINCT Sqlite查询的结果

时间:2019-11-28 06:28:34

标签: sql database sqlite

我搜索并发现我可以将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"

有人可以帮助我了解我在这里做错了什么吗?我非常感谢您的时间和帮助。

2 个答案:

答案 0 :(得分:1)

在使用distinct()函数之前先获取substr()

select substr('Object-' || t1.ID, 1, 10) as IDs
    from (SELECT DISTINCT(ID) ID FROM timeLapse) t1

请参阅sqlfiddle

答案 1 :(得分:0)

所有记为ϻᴇᴛᴀʟ的用户的功劳,据我仅从他们的回答中了解到,该查询中应该有一个子查询,DISTINCT应该进入该子查询。

这解决了我的问题:

select printf('Object-%s', t1.ID) as IDs
    FROM (SELECT DISTINCT(id) ID FROM timeLapse) t1