相关疑难解决方法(0)

如何选择每个类别的最新四个项目?

我有一个项目数据库.每个项目都使用类别表中的类别ID进行分类.我正在尝试创建一个列出每个类别的页面,在每个类别下面我想要显示该类别中的4个最新项目.

例如:

宠物用品

img1
img2
img3
img4
Run Code Online (Sandbox Code Playgroud)

宠物食品

img1
img2
img3
img4
Run Code Online (Sandbox Code Playgroud)

我知道我可以通过查询每个类别的数据库轻松解决这个问题,如下所示:

SELECT id FROM category

然后迭代该数据并查询每个类别的数据库以获取最新的项目:

SELECT image FROM item where category_id = :category_id 
ORDER BY date_listed DESC LIMIT 4

我想弄清楚的是,如果我可以使用1个查询并获取所有数据.我有33个类别,所以我想也许这有助于减少对数据库的调用次数.

任何人都知道这是否可行?或者,如果33次通话不是那么大,我应该这么简单.

mysql sql greatest-n-per-group

31
推荐指数
2
解决办法
1万
查看次数

如何从ActiveRecord中获取每组的最新记录?

在我的Ruby on Rails应用程序中,我有一个像这样的数据库结构:

Project.create(:group => "1", :date => "2014-01-01")
Project.create(:group => "1", :date => "2014-01-02")
Project.create(:group => "1", :date => "2014-01-03")

Project.create(:group => "2", :date => "2014-01-01")
Project.create(:group => "2", :date => "2014-01-02")
Project.create(:group => "2", :date => "2014-01-03")

# and so forth...
Run Code Online (Sandbox Code Playgroud)

如何group使用ActiveRecord 获取每个记录的最新记录?

解决方案可能很简单,但我无法理解这一点.

谢谢你的帮助.

ruby activerecord ruby-on-rails

27
推荐指数
4
解决办法
2万
查看次数

如何通过ORDER构建一个SQLite查询到GROUP?

我有一个相当有趣的情况.我有一个充满地址和消息的SQLite数据库(地址不是唯一的;消息是).每条消息还有一个与之关联的日期.我想要做的是选择第一个消息的地址,消息,日期以及与该地址关联的消息数量.

所以,我想,"我可以通过集团的地址只有每个地址得到一个消息,然后按日期顺序这些,也获取地址栏的数量."

我这样做了,它有效......有点儿.它获取正确的计数,每个地址只获取一条消息,并按日期排序 - 但它不会选择该地址的最新消息.这似乎是武断的.

例如,我有三条消息(最早到最晚)来自地址Y的A,B,C和来自地址Z的三条消息D,E,F.查询可以获取消息B和E,然后按日期对它们进行排序.它应该获取消息C和F,并按日期对它们进行排序.

这是我到目前为止:

// Expanded version:
Cursor cursor = db.query(
    /* FROM */ "messages_database",
    /* SELECT */ new String[]{ "*", "COUNT(address) AS count" },
    /* WHERE */ null,
    /* WHERE args */ null,
    /* GROUP BY */ "address",
    /* HAVING */ null,
    /* ORDER BY */ "date DESC"
);

// Or, same code on one line:
Cursor cursor = db.query("messages_database", new String[]{ "*", "COUNT(address) AS count" …
Run Code Online (Sandbox Code Playgroud)

sql sqlite android greatest-n-per-group

17
推荐指数
2
解决办法
4万
查看次数

使用GROUP BY选择多个(非聚合函数)列

我试图从一列中选择最大值,同时按另一个具有多个重复值的非唯一id列进行分组.原始数据库看起来像:

mukey    | comppct_r | name | type
65789    | 20        | a    | 7n
65789    | 15        | b    | 8m
65789    | 1         | c    | 1o
65790    | 10        | a    | 7n
65790    | 26        | b    | 8m
65790    | 5         | c    | 1o
...
Run Code Online (Sandbox Code Playgroud)

这适用于:

SELECT c.mukey, Max(c.comppct_r) AS ComponentPercent
FROM c
GROUP BY c.mukey;
Run Code Online (Sandbox Code Playgroud)

返回一个表格如下:

mukey    | ComponentPercent
65789    | 20
65790    | 26
65791    | 50
65792    | 90
Run Code Online (Sandbox Code Playgroud)

我希望能够在不影响GROUP BY功能的情况下添加其他列,在输出表中包含名称和类型等列,如: …

sql ms-access greatest-n-per-group

15
推荐指数
1
解决办法
5万
查看次数

MySql - 获取Min,Max和3个随机行

我想要一个MySql查询获得5行,其中包括最小价格行,最大价格行和其他3个随机行.

表:

ID  Product Price
1   data    2
2   data    20
3   data    55
4   data    24
5   data    2
6   data    15
7   data    10
8   data    33
9   data    3
10  data    30
Run Code Online (Sandbox Code Playgroud)

预期结果(随机3行)

ID  Product Price
1   data    2
3   data    55
4   data    24
6   data    15
7   data    10
Run Code Online (Sandbox Code Playgroud)

任何帮助将不胜感激!

php mysql

10
推荐指数
2
解决办法
778
查看次数

ActiveRecord不存在

除了find_by_sql之外,有没有办法在ActiveRecord中使用EXISTS?

我想要一个很好的方法来找到一对多关系中没有关联的所有记录.

SELECT DISTINCT store_type FROM stores
  WHERE NOT EXISTS (SELECT * FROM cities_stores
                    WHERE cities_stores.store_type = stores.store_type)
Run Code Online (Sandbox Code Playgroud)

activerecord

8
推荐指数
1
解决办法
4945
查看次数

SQL选择行,其中id = max(id)

我有一个表,其中包含产品信息,其中包含具有相同标题的产品的多个实例,由不同颜色及其ID标识.我需要输出整个行,其中id =按标题分组的最大ID,但我似乎无法做到这一点.这是一个非常简化的表和一些示例数据:

id   title   colour   description

1    rico    red      blah1
2    rico    blue     blah2
3    rico    yellow   blah3
4    katia   black    blah4
5    katia   white    blah5
Run Code Online (Sandbox Code Playgroud)

在我的代码的这个例子中,当我想要3个rico黄色blah3时,我得到1个rico red blah1.

这是我正在使用的代码:

SELECT pd_id, pd_title, pd_description, pd_colour,
       pd_price,pd_large_image,pd_date,cat_sub_id_3,pd_new
FROM product 
WHERE 
  cat_sub_id_1 = '".$cat_sub_id."' 
  AND cat_parent_id='".$cat_parent_id."' 
GROUP BY pd_title 
HAVING MAX(pd_id) 
ORDER BY pd_id DESC
Run Code Online (Sandbox Code Playgroud)

更新:谢谢你们,

我使用alinoz的答案来提出以下代码,它有效:)

SELECT
    pd_id,pd_title,pd_description,pd_colour,pd_price,pd_large_image,pd_date,cat_sub_id_3,pd_new
FROM product 
HERE cat_sub_id_1 = '".$cat_sub_id."' AND cat_parent_id='".$cat_parent_id."'
AND pd_id IN (
    SELECT max(pd_id)
    FROM product
    WHERE cat_sub_id_1 = '".$cat_sub_id."' AND cat_parent_id='".$cat_parent_id."'
    GROUP …
Run Code Online (Sandbox Code Playgroud)

mysql sql aggregate-functions greatest-n-per-group

8
推荐指数
4
解决办法
5万
查看次数

如何在Spring JpaRepository中使用JPQL选择组中的最新记录?

在SpringBoot微服务中,我试图为每个mean_of_payment_id选择一个actor的最新记录.为此,请使用mean_of_payment_id上的group by子句为actor_id选择actor内容,其中created_date等于max(created_date)嵌套查询的子集.我正在使用JPQL.下面是表结构和查询.

在此输入图像描述

    @Query("select ac from ActorContent ac "
        + "where (ac.actor.uuid=:actorUuid ) and "
        + "ac.createdDate IN ( SELECT MAX(aci.createdDate) "
            + "FROM ActorContent aci WHERE ac.actor.uuid=aci.actor.uuid "
            + "and aci.uuid = ac.uuid group by ac.meanOfPayment.id)"
        )
Run Code Online (Sandbox Code Playgroud)

在此输入图像描述

不幸的是,在执行查询后,我得到了所有记录,但我期待的是前三行.MeanOfPayment和Actor是ActorContent的引用表.

jpa jpql spring-data spring-data-jpa spring-repositories

8
推荐指数
1
解决办法
896
查看次数

SQL 选择组的最大值

初始表是这样的:

Fruit  | Item_ID | Production_line | Amount_produced | Production_date 
---------------------------------------------------------------
Apples | 652     | 1               | 24              | 2016-05-12    
Pears  | 455     | 4               | 54              | 2016-05-16    
Pears  | 455     | 2               | 26              | 2016-05-13    
Apples | 652     | 6               | 65              | 2016-05-14  
Apples | 652     | 3               | 24              | 2016-05-21    
Pears  | 455     | 7               | 54              | 2016-05-17    
Pears  | 455     | 5               | 26              | 2016-05-15    
Apples | 652     | 8               | …
Run Code Online (Sandbox Code Playgroud)

mysql sql group-by phpmyadmin max

6
推荐指数
1
解决办法
8330
查看次数

在sql中选择具有最新日期的行,每个ID重复多次

我有一个表,每个ID重复3次.每行中每个id前面都有一个日期.
我想为最新日期的每个ID选择整行.此表中共有370列我希望在选择该行时选择所有列.

样品 -

ID   Name    Date        Marks    ..    ..  ..   
1     XY     4/3/2017     27
1     fv     4/3/2014     98
1     jk     4/3/2016     09
2     RF     4/12/2015    87
2     kk     4/3/2009     56
2     PP     4/3/2011     76
3     ee     4/3/2001     12
3     ppp    4/3/2003     09
3     lll    4/3/2011     23
Run Code Online (Sandbox Code Playgroud)

答案应该是

ID   Name    Date        Marks    ..    ..  ..   
1     XY     4/3/2017     27      
2     RF     4/12/2015    87
3     lll    4/3/2011     23  
Run Code Online (Sandbox Code Playgroud)

我正在尝试如下 -

select distinct ID,*,max(date) as maxdate from table
Run Code Online (Sandbox Code Playgroud)

我也是在Hive中尝试这个.所以不确定某些sql函数是否在Hive中不起作用

谢谢

mysql sql hive

6
推荐指数
4
解决办法
6万
查看次数