相关疑难解决方法(0)

SELECT .. FROM(SELECT .. FROM ..).如何改进此查询?

我正在学习SQL并且已经阅读了GalaXQL应用程序的章节.

我已经写了下面的问题来回答"Hilight the star(或星星)"这个行星在星系中具有最高轨道距离.记得在开始前清除旧的hilights.

此查询返回结果starid:23334,当插入hilight表时,允许我前进.但是,在将结果交还给我之前,程序会挂起很长时间,因此我怀疑从数据库中提取这些信息的效率要高得多.

此查询有效,但需要很长时间才能处理,如何改进此查询?

INSERT INTO hilight 
SELECT DISTINCT s.starid 
FROM planets AS p, stars AS s, moons AS m 
WHERE s.starid=(SELECT starid 
                FROM planets 
                WHERE orbitdistance=(SELECT MAX(orbitdistance) 
                                     FROM planets));
Run Code Online (Sandbox Code Playgroud)

我在这个查询结构背后的逻辑

首先找到距离"行星"表有最大轨道距离的行星.

其次是将"最高轨道距离"的值与"行星"表的"轨道距离"字段进行比较,并返回与该字段相关的"星形".

第三步将"行星"表中的"starid"字段的值与表格"stars"中的字段"starid"进行比较,然后将"starid"插入表"hilight".

数据结构:

在此输入图像描述

sql sqlite

3
推荐指数
1
解决办法
705
查看次数

PHP/MySQL - 选择表中的每种类型之一

我正在创建一个包含许多不同类别的博客,在我的主页上,我想展示每个类别的一篇文章(除了可能是"miscelanious"),但我不确定是否有一个简单的单行解决方案.我希望有类似的东西:

"SELECT * FROM blogs WHERE cat != 'misc' ORDER BY added LIMIT (ONE OF EACH CAT TYPE)"
Run Code Online (Sandbox Code Playgroud)

这样的事情可能吗?

php mysql select

3
推荐指数
1
解决办法
1219
查看次数

如何选择具有最大日期的行

这是我的表名 tblPE

PEID |idnum  | PE_DATE_EXAM   | ATTENDANCE       
1    | 39    | 2014-08-01     | PRESENT       
2    | 42    | 2014-08-10     | ABSENT            
3    | 39    | 2014-08-12     | PRESENT           
4    | 43    | 2014-08-05     | PRESENT        
5    | 42    | 2014-07-15     | NULL           
6    | 39    | 2014-07-03     | ABSENT       
7    | 41    | 2014-08-01     | PRESENT    
Run Code Online (Sandbox Code Playgroud)

我想选择最大 PE_DATE_EXAM 值,其中 idnum = 39 且 ATTENDANCE=PReSENT

结果应该是:

PEID |idnum  | PE_DATE_EXAM   | ATTENDANCE
-------------------------------------------
3    | 39    | 2014-08-12     | PRESENT
Run Code Online (Sandbox Code Playgroud)

mysql sql

3
推荐指数
1
解决办法
8931
查看次数

SQL Group-By 最常见

假设我有下表

+-----------------------+----------------+
| PERSON                | ATE            |
+-----------------------+----------------+
| Joe                   | Chicken        |
| Joe                   | Chicken        |
| Joe                   | Chicken        |
| Joe                   | Tuna           |
| Joe                   | Tuna           |
| Joe                   | Chicken        |
| Joe                   | Tuna           |
| Joe                   | Chicken        |
| Joe                   | Tuna           |
| Joe                   | Tuna           |
| Joe                   | Tuna           |
| Joe                   | Chicken        |
| Joe                   | Tuna           |
| Joe                   | Tuna           |
| Joe …
Run Code Online (Sandbox Code Playgroud)

mysql sql

3
推荐指数
1
解决办法
3385
查看次数

KDB优雅地仅选择列上具有最大值的行

我有这个股票价格表(这里是简化版):

+----------+--------+-------+
|   Time   | Ticker | Price |
+----------+--------+-------+
| 10:00:00 | A      |     5 |
| 10:00:01 | A      |     6 |
| 10:00:00 | B      |     3 |
+----------+--------+-------+
Run Code Online (Sandbox Code Playgroud)

我想通过Ticker选择具有最大时间的行组,例如

+----------+--------+-------+
|   Time   | Ticker | Price |
+----------+--------+-------+
| 10:00:01 | A      |     6 |
| 10:00:00 | B      |     3 |
+----------+--------+-------+
Run Code Online (Sandbox Code Playgroud)

我知道如何在SQL中做到这一点,类似的问题可以在这里找到,但我不知道如何在KDB中优雅地做到这一点.

我有一个选择两次的解决方案:

select first Time, first Ticker, first Price by Ticker from (`Time xdesc select Time, Ticker, Price from table where …
Run Code Online (Sandbox Code Playgroud)

kdb

3
推荐指数
1
解决办法
861
查看次数

每个GROUP BY限制SQL查询

我有20个教室,每个教室有50个学生.

是否可以在一个查询语句中找到每个教室中的10名最佳学生?

表"klas":

int id
int cla_id
int stu_id
int final_score
Run Code Online (Sandbox Code Playgroud)

sql sql-server postgresql greatest-n-per-group

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

选择分组中的字段

我的内容中包含以下数据DataTable:

   id   vrn   seenDate
   ---  ----  --------

    1   ABC   2017-01-01 20:00:05
    2   ABC   2017-01-01 18:00:09
    3   CCC   2016-05-05 00:00:00
Run Code Online (Sandbox Code Playgroud)

我试图修改数据只显示vrn最近日期的值.这是我到目前为止所做的:

myDataTable.AsEnumerable().GroupBy(x => x.Field<string>("vrn")).Select(x => new { vrn = x.Key, seenDate = x.Max(y => y.Field<DateTime>("seenDate")) });
Run Code Online (Sandbox Code Playgroud)

我需要修改上面的内容以选择id字段(即我不想在这个字段上分组,但我希望将它包含在结果数据集中).

我不能放入x.Field<int>("id")Select()部分,因为Field子句不存在.

.net c# linq

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

如何获取mysql中每个用户的最新消息?

我有数据库来存储客户和消息

在此处输入图片说明

我正在尝试获取所有客户及其最新消息的列表,例如 Messenger 中的第一个屏幕。

SELECT *
FROM message AS m
LEFT JOIN customer AS c ON c.id=m.sender_id
ORDER BY m.sent_at DESC
Run Code Online (Sandbox Code Playgroud)

但这会返回所有用户的所有消息。我也试过这样做

SELECT * 
FROM message AS m
LEFT JOIN customer AS c ON c.id=m.sender_id
GROUP BY c.id
Run Code Online (Sandbox Code Playgroud)

但这不会在所有数据库上运行,并且无法对结果集进行排序以仅获取最新消息。

mysql sql datetime greatest-n-per-group window-functions

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

MySQL SELECT 同一列中的多个/所有最大值

假设我得到这张表:

MyTable
+----+-------+
| ID | count |
+----+-------+
| a  | 2     |
| b  | 6     |
| c  | 4     |
| d  | 6     |
| e  | 2     |
+----+-------+
Run Code Online (Sandbox Code Playgroud)

现在我想要回这个:

Result
+----+-------+
| ID | count |
+----+-------+
| b  | 6     |
| d  | 6     |
+----+-------+
Run Code Online (Sandbox Code Playgroud)

我想要具有最多计数值的 ID。因此,如果有多个最大值,我想要全部。我也不知道是否会有多个值,如果有的话,会有多少个。

mysql sql

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

为SQL中的每条记录选择最高值

我是SQL新手,我遇到的问题是我在表中有很多资产的价值.我需要为该表中的每个资产获得最高速度.

我试过搜索谷歌,但我发现了MAX()SQL 的功能.

我不需要,MAX()因为这只会给我一个具有最高价值的记录.我需要每个资产的最高价:

例如

iAssetId fSpeedKPH

1 78

5 77

5 80

8 74

8 81

8 88

8 111

24 71

24 78

24 79

24 79

24 82

24 84

24 90

24 91

24 92

我突出显示了每个资产的最高行,即AssetId = 1,5,24和8

这些是我需要选择的行.

什么是最有效的方式?

我是否必须遍历由我编写的SQL返回的结果集?

编辑:

我的SQL:

DECLARE @dateMinusDay datetime = DateAdd(dd, -1, GetDate())

select vm.iAssetId, max(vm.fSpeedKPH), vm.dtUTCDateTime, ge.sGeofenceName  from VehicleMonitoringLog vm
inner join Geofences ge on ge.iGeofenceId = vm.iGeofenceId

where vm.iGeofenceId != 1 AND vm.fSpeedKPH …
Run Code Online (Sandbox Code Playgroud)

sql t-sql sql-server

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