相关疑难解决方法(0)

如何在SQL数据库表中选择第n行?

我有兴趣学习一些(理想情况下)数据库无关的方法来从数据库表中选择第n行.看看如何使用以下数据库的本机功能实现这一目标也很有趣:

  • SQL Server
  • MySQL的
  • PostgreSQL的
  • SQLite的
  • 神谕

我目前正在SQL Server 2005中执行类似下面的操作,但我有兴趣看到其他更不可知的方法:

WITH Ordered AS (
SELECT ROW_NUMBER() OVER (ORDER BY OrderID) AS RowNumber, OrderID, OrderDate
FROM Orders)
SELECT *
FROM Ordered
WHERE RowNumber = 1000000
Run Code Online (Sandbox Code Playgroud)

感谢上述SQL:Firoz Ansari的Weblog

更新:请参阅Troels Arvin关于SQL标准的答案.Troels,您有任何我们能引用的链接吗?

mysql sql database oracle postgresql

373
推荐指数
13
解决办法
72万
查看次数

如何从具有相同列值的mysql表中删除某一行?

我的MySQL查询有问题.我的表有4列,看起来像这样:

id_users    id_product    quantity    date
 1              2              1       2013
 1              2              1       2013
 2              2              1       2013
 1              3              1       2013
Run Code Online (Sandbox Code Playgroud)

id_users并且id_product是来自不同表的外键.

我想要的是只删除一行:

1     2     1    2013
Run Code Online (Sandbox Code Playgroud)

哪个出现两次,所以我只想删除它.

我试过这个查询:

delete from orders where id_users = 1 and id_product = 2
Run Code Online (Sandbox Code Playgroud)

但它会删除它们(因为它们是重复的).解决这个问题的任何提示?

mysql delete-row

152
推荐指数
5
解决办法
52万
查看次数

如何使用Microsoft SQL Server实现LIMIT?

我有这个查询与mysql:

select * from table1 LIMIT 10,20
Run Code Online (Sandbox Code Playgroud)

我怎么能用Microsoft sql做到这一点?

sql sql-server migration

120
推荐指数
9
解决办法
27万
查看次数

Rails会破坏所有最新的n条记录

如何使用Rails的ActiveRecord销毁除最新的n条记录以外的所有记录?

我可以使用顺序和限制来获取最新的n条记录但是如何销毁反转?

activerecord ruby-on-rails

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

MySQL - 有效删除除最后 N 条以外的所有记录

我最近开始学习 SQL,现在被要求对表执行一个简单的删除,保留每个用户的最后 100 条记录。我正在研究将其存档的最佳方法(更有效的方法),并找到了一些可能的解决方案(SQL 查询:从表中删除除最新 N 之外的所有记录?从 SQL 中的数据库表中删除除前 n之外的所有记录),但它是那种错综复杂的让我根据效率选择一个。所以我在这里寻求你的帮助。

这是我们保存用户访问日志的名为“访问”的表。

access:
- id (autoincrement) - primary
- userid (integer 11) - key
- refer (varchar 100)
- date (date/time)
Run Code Online (Sandbox Code Playgroud)

我的想法是每次同一用户进入系统时,就在插入新日志之前,从用户 ID 中删除旧记录。

我已经尝试了以下代码,但出现错误:此版本的 MySQL 尚不支持“LIMIT & IN/ALL/ANY/SOME 子查询”

DELETE FROM
  access
WHERE
  id NOT IN (
    SELECT id FROM access WHERE userid = 10 ORDER BY id DESC LIMIT 100
  );
Run Code Online (Sandbox Code Playgroud)

拜托,你能给我建议一些解决方案吗?谢谢!

mysql sql sql-delete

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

删除MySQL表中除5个最新条目外的所有条目

我目前有PHP代码处理逻辑,因为我不知道如何在SQL中处理它.我想创建一个存储过程,删除除给定config_id的最新行之外的所有行.IE config_id = 5被传递给SP,因此它知道它要清理哪个config_id.

CREATE TABLE  `TAA`.`RunHistory` (
  `id` int(11) NOT NULL auto_increment,
  `start_time` datetime default NULL,
  `stop_time` datetime default NULL,
  `success_lines` int(11) default NULL,
  `error_lines` int(11) default NULL,
  `config_id` int(11) NOT NULL,
  `file_id` int(11) NOT NULL,
  `notes` text NOT NULL,
  `log_file` longblob,
  `save` tinyint(1) NOT NULL default '0',
  PRIMARY KEY  (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=128 DEFAULT CHARSET=utf8;
Run Code Online (Sandbox Code Playgroud)

最新的将由start_time确定,如果stop_time为null但不是最新的应删除(如果运行被毫不客气地杀死,则stop_time可以为null).

mysql stored-procedures

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

如果count大于20,如何从表中删除

我有一个mysql表,我需要在添加其他记录之前只包含20条最新记录.每天都会添加新行,因此我希望首先删除任何大于最早允许的记录.

该表包含一个自动增量"id"列,因此我可以轻松确定哪个是最早的记录.

谢谢你的帮助.

mysql

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