我搜索并发现我可以将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"
有人可以帮助我了解我在这里做错了什么吗?我非常感谢您的时间和帮助。
答案 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