有没有办法让Oracle查询表现得像包含一个MySQL limit子句?
在MySQL,我可以这样做:
select *
from sometable
order by name
limit 20,10
Run Code Online (Sandbox Code Playgroud)
获得第21行到第30行(跳过前20行,给出下一行10).在行之后选择行order by,因此它实际上按字母顺序从第20个名称开始.
在Oracle,人们提到的唯一的事情是rownum伪列,但它之前 进行了评估order by,这意味着:
select *
from sometable
where rownum <= 10
order by name
Run Code Online (Sandbox Code Playgroud)
将返回按名称排序的十行的随机集合,这通常不是我想要的.它也不允许指定偏移量.
有一个表messages包含如下所示的数据:
Id Name Other_Columns
-------------------------
1 A A_data_1
2 A A_data_2
3 A A_data_3
4 B B_data_1
5 B B_data_2
6 C C_data_1
Run Code Online (Sandbox Code Playgroud)
如果我运行查询select * from messages group by name,我会得到如下结果:
1 A A_data_1
4 B B_data_1
6 C C_data_1
Run Code Online (Sandbox Code Playgroud)
什么查询将返回以下结果?
3 A A_data_3
5 B B_data_2
6 C C_data_1
Run Code Online (Sandbox Code Playgroud)
也就是说,应返回每组中的最后一条记录.
目前,这是我使用的查询:
SELECT
*
FROM (SELECT
*
FROM messages
ORDER BY id DESC) AS x
GROUP BY name
Run Code Online (Sandbox Code Playgroud)
但这看起来非常低效.还有其他方法可以达到相同的效果吗?
我有一个带account numbers和的数据库card numbers.我将这些文件与update任何卡号匹配到帐号,以便我只使用帐号.
我创建了一个视图链接表和帐户/卡数据库以返回Table ID相关的帐号,现在我需要更新ID与帐号匹配的记录.
这是Sales_Import表,account number需要更新字段:
LeadID AccountNumber
147 5807811235
150 5807811326
185 7006100100007267039
Run Code Online (Sandbox Code Playgroud)
这是RetrieveAccountNumber表,我需要更新:
LeadID AccountNumber
147 7006100100007266957
150 7006100100007267039
Run Code Online (Sandbox Code Playgroud)
我试过以下,但到目前为止没有运气:
UPDATE [Sales_Lead].[dbo].[Sales_Import]
SET [AccountNumber] = (SELECT RetrieveAccountNumber.AccountNumber
FROM RetrieveAccountNumber
WHERE [Sales_Lead].[dbo].[Sales_Import]. LeadID =
RetrieveAccountNumber.LeadID)
Run Code Online (Sandbox Code Playgroud)
它将卡号更新为帐号,但帐号被替换为 NULL
我已经看到了SQL同时使用!=,并<>为不相等.什么是首选语法,为什么?
我喜欢!=,因为<>让我想起Visual Basic.
我的表是:
id home datetime player resource
---|-----|------------|--------|---------
1 | 10 | 04/03/2009 | john | 399
2 | 11 | 04/03/2009 | juliet | 244
5 | 12 | 04/03/2009 | borat | 555
3 | 10 | 03/03/2009 | john | 300
4 | 11 | 03/03/2009 | juliet | 200
6 | 12 | 03/03/2009 | borat | 500
7 | 13 | 24/12/2008 | borat | 600
8 | 13 | 01/01/2009 | borat | 700
Run Code Online (Sandbox Code Playgroud)
我需要选择每个不同的 …
只是想知道你们中的任何一个人是否Count(1)过度使用过Count(*),如果性能有显着差异,或者这只是从过去几天带来的遗留习惯?
(具体数据库是SQL Server 2005.)
我如何auto increment在primary key一个SQL Server数据库表,我已经通过论坛看看,但不能看到.
我查看了属性,但看不到一个选项,我看到了一个答案,你去了Identity规范属性并将其设置为是并设置Identity increment为1,但该部分显示为灰色,我无法更改不,是的.
必须有一个简单的方法来做到这一点,但我找不到它.
可能重复:
删除MySQL中的重复行
如何从MySQL表中删除所有重复数据?
例如,使用以下数据:
SELECT * FROM names;
+----+--------+
| id | name |
+----+--------+
| 1 | google |
| 2 | yahoo |
| 3 | msn |
| 4 | google |
| 5 | google |
| 6 | yahoo |
+----+--------+
Run Code Online (Sandbox Code Playgroud)
我会使用,SELECT DISTINCT name FROM names;如果它是一个SELECT查询.
我怎么做DELETE才能删除重复项并保留每个重复记录?
我有一个SQL Sever引用路径(UNC或其他)的table(),但现在路径将会改变.
在路径列中,我有很多记录,我需要更改路径的一部分,而不是整个路径.我需要在每条记录中将相同的字符串更改为新字符串.
我怎么能用简单的方法做到这一点update?
sql ×9
sql-server ×5
mysql ×3
group-by ×2
database ×1
distinct ×1
duplicates ×1
identity ×1
join ×1
limit ×1
max ×1
oracle ×1
pagination ×1
performance ×1
select ×1
sql-update ×1
t-sql ×1