我已经远远地搜索了这个问题的答案.我正在使用Microsoft SQL Server,假设我有一个如下所示的表:
+--------+---------+-------------+-------------+
| ID | NUMBER | COUNTRY | LANG |
+--------+---------+-------------+-------------+
| 1 | 3968 | UK | English |
| 2 | 3968 | Spain | Spanish |
| 3 | 3968 | USA | English |
| 4 | 1234 | Greece | Greek |
| 5 | 1234 | Italy | Italian |
Run Code Online (Sandbox Code Playgroud)
我想执行一个只选择唯一"NUMBER"列的查询(无论是第一行还是最后一行都不会打扰我).所以这会给我:
+--------+---------+-------------+-------------+
| ID | NUMBER | COUNTRY | LANG |
+--------+---------+-------------+-------------+
| 1 | 3968 | UK | English | …
Run Code Online (Sandbox Code Playgroud) 我正在尝试编写一个查询,从每个独特设备的GPSReport表返回最新的GPS位置.表中有50个设备,所以我只想要返回50行.
这是我到目前为止(不工作)
SELECT TOP(SELECT COUNT(DISTINCT device_serial) FROM GPSReport) * FROM GPSReport AS G1
RIGHT JOIN
(SELECT DISTINCT device_serial FROM GPSReport) AS G2
ON G2.device_serial = G1.device_serial
ORDER BY G2.device_serial, G1.datetime DESC
Run Code Online (Sandbox Code Playgroud)
这将返回50行,但不会为每个device_serial返回唯一的行.它返回第一个设备的所有报告,然后返回第二个设备的所有报告等.
我想在一个查询中做什么?
我正在创建两个表的连接视图,但是从table2获得了不需要的重复项.
例如:table1有9000条记录,我需要生成的视图包含完全相同的内容; table2可能有多个具有相同FKID的记录,但我只想返回一条记录(随机选择对我的客户来说是好的).我有以下代码正常工作,但性能比期望慢(超过14秒).
SELECT
OBJECTID
, PKID
,(SELECT TOP (1) SUBDIVISIO
FROM dbo.table2 AS t2
WHERE (t1.PKID = t2.FKID)) AS ProjectName
,(SELECT TOP (1) ASBUILT1
FROM dbo.table2 AS t2
WHERE (t1.PKID = t2.FKID)) AS Asbuilt
FROM dbo.table1 AS t1
Run Code Online (Sandbox Code Playgroud)
有没有办法与连接类似的东西来加快性能?
我正在使用SQL Server 2008 R2.
我接近以下代码(约.5秒),但是'Distinct'仅在所有列重复时过滤掉记录(而不仅仅是FKID).
SELECT
t1.OBJECTID
,t1.PKID
,t2.ProjectName
,t2.Asbuilt
FROM dbo.table1 AS t1
LEFT JOIN (SELECT
DISTINCT FKID
,ProjectName
,Asbuilt
FROM dbo.table2) t2
ON t1.PKID = t2.FKID
Run Code Online (Sandbox Code Playgroud)
表格示例
table1 table2
OID, PKID FKID, ProjectName, Asbuilt
1, id1 id1, P1, …
Run Code Online (Sandbox Code Playgroud) 我有一个非常大的MySQL表,包含从许多传感器读取的数据.基本上,有一个时间戳和一个值列.我将省略传感器ID,在此处索引其他详细信息:
CREATE TABLE `data` (
`time` datetime NOT NULL,
`value` float NOT NULL
)
Run Code Online (Sandbox Code Playgroud)
该value
列很少更改,我需要找到发生这些更改的时间点.假设每分钟都有一个值,以下查询将返回我需要的内容:
SELECT d.*,
(SELECT value FROM data WHERE time<d.time ORDER by time DESC limit 1)
AS previous_value
FROM data d
HAVING d.value<>previous_value OR previous_value IS NULL;
+---------------------+-------+----------------+
| time | value | previous_value |
+---------------------+-------+----------------+
| 2011-05-23 16:05:00 | 1 | NULL |
| 2011-05-23 16:09:00 | 2 | 1 |
| 2011-05-23 16:11:00 | 2.5 | 2 |
+---------------------+-------+----------------+
Run Code Online (Sandbox Code Playgroud)
唯一的问题是这是非常低效的,主要是由于依赖子查询.使用MySQL 5.1提供的工具优化它的最佳方法是什么?
最后一个约束是在将值插入数据表之前不对它们进行排序,并且它们可能在以后更新.这可能会影响任何可能的去规范化策略.
我有问题SQL SELECT DISTINCT
,和PHP/jQuery.我正在使用自动完成功能,它正在工作,但不是预期的.我有一些行的数据库:
Lukoil..
Lukoil..
Statoil..
Statoil..
Statoil..
Neste..
Neste..
Run Code Online (Sandbox Code Playgroud)
我有SQL查询:
SELECT DISTINCT name FROM poi_example WHERE name LIKE '%$text%' ORDER BY name ASC
Run Code Online (Sandbox Code Playgroud)
但是当我在搜索输入中键入一个名字时,我没有得到不同的值:
所以我需要你提供的服务,
数据库输出:
INSERT INTO `poi_example` (`id`, `name`, `description`, `lat`, `lon`, `city`, `rajonas`) VALUES
(24, 'Statoil', 'Veiverių pl. 49a, Kaunas tel.: 8-37 39 10 62 Degalinės darbo laikas Visą parą Plovyklų darbo laikas: Visą parą', '54.88111', '23.89360', 'Kaunas', 'Aleksotas'),
(25, 'Statoil', 'Karaliaus Mindaugo pr.34a, Kaunas tel.: 8-37 42 37 29 DegalinÄ—s darbo laikas VisÄ… …
Run Code Online (Sandbox Code Playgroud) 我的查询有问题,mysql抛出以下错误:
Run Code Online (Sandbox Code Playgroud)#1055 - Expression #66 of SELECT list is not in GROUP BY clause and contains nonaggregated column 's.status' which is not functionally dependent on columns in GROUP BY clause; this is incompatible with sql_mode=only_full_group_by
查询是:
select p.*,
pd.*,
m.*,
IF(s.status, s.specials_new_products_price, null) as specials_new_products_price,
IF(s.status, s.specials_new_products_price, p.products_price) as final_price
FROM products p
LEFT JOIN specials s ON p.products_id = s.products_id
LEFT JOIN manufacturers m using(manufacturers_id) ,
products_description pd,
categories c,
products_to_categories p2c
WHERE p.products_view = 1
AND p.products_status = …
Run Code Online (Sandbox Code Playgroud)