在select语句中将group_concat作为列的sqlite子查询
我有两个表,一个包含一个名为在select语句中将group_concat作为列的sqlite子查询,sqlite,Sqlite,我有两个表,一个包含一个名为watch\u list的项目列表,其中包含一些重要属性,另一个只是一个名为price\u history的价格列表。我想做的是使用group_concat操作将10个最低价格分组到一个列中,然后使用监视列表中的项目属性以及监视列表中每个项目的10个最低价格创建一行。首先我尝试了连接,但后来我意识到操作的顺序是错误的,因此我无法通过连接操作获得所需的结果。然后我尝试了一个显而易见的方法,只是查询了watch\u列表中每一行的price\u history,然后在主机环
watch\u list
的项目列表,其中包含一些重要属性,另一个只是一个名为price\u history
的价格列表。我想做的是使用group_concat操作将10个最低价格分组到一个列中,然后使用监视列表
中的项目属性以及监视列表
中每个项目的10个最低价格创建一行。首先我尝试了连接,但后来我意识到操作的顺序是错误的,因此我无法通过连接操作获得所需的结果。然后我尝试了一个显而易见的方法,只是查询了watch\u列表
中每一行的price\u history
,然后在主机环境中将所有内容粘在一起,这很有效,但似乎效率很低。现在我有了下面的查询,它看起来应该可以工作,但是它没有给我想要的结果。我想知道以下说法有什么问题:
select w.asin,w.title,
(select group_concat(lowest_used_price) from price_history as p
where p.asin=w.asin limit 10)
as lowest_used
from watch_list as w
基本上,我希望
limit
操作发生在group\u concat
做任何事情之前,但我想不出一个sql语句可以做到这一点。解决了它,正如有人曾经说过的那样,“计算机科学中的所有问题都可以通过另一个间接层次来解决。”在本例中,一个额外的select
子查询起到了作用:
select w.asin,w.title,
(select group_concat(lowest_used_price)
from (select lowest_used_price from price_history as p
where p.asin=w.asin limit 10)) as lowest_used
from watch_list as w