我一直试图实现分页已经有一段时间了,我发现这个教程用于使用MVC进行分页:ASP.NET MVC分页完美地完成了
现在,在这个解决方案中,我在数据库中查询整个客户端集,然后返回一个客户端的分页列表而不是普通列表.
我觉得这很令人不安,因为我只打算每页显示10或20个条目,而我的数据库很容易就会有超过一百个.因此,每次我想显示Index页面时查询整个数据库似乎都是一个糟糕的解决方案.
如果我理解错误的东西,请立即剪掉我,但对我而言,这个解决方案绝不是完美的.
我误解了什么吗?是否有一个更有效的解决方案或库用于MVC的分页?
有没有办法在Oracle中获取像Oracle中的rownum中的行号,如果没有,那么有没有间接的方法呢?请建议.
注意:我是数据库和PHP的新手
我有一个order设置为auto increment和的列unique.
http://f.cl.ly/items/3u2D1l1j2l0j0A16450I/Image%202013-07-22%20at%207.00.15%20PM.png
在我的PHP脚本中,我使用AJAX来获取新数据,但问题是,order跳过数字并且显着更高,因此迫使我在插入数据时手动更新数字.在这种情况下,我最终会782改为38.
http://f.cl.ly/items/0N2J1w1Y310E2H2o0m05/Image%202013-07-22%20at%206.49.20%20PM.png
$SQL = "INSERT IGNORE INTO `read`(`title`,`url`) VALUES\n ".implode( "\n,",array_reverse( $sql_values ) );
Run Code Online (Sandbox Code Playgroud)
如何让它增加+1?
我有一个包含两个表的数据库 - 公司和报告.我想计算从q1(第1季度)到第2季度(第2季度)的变化.我曾尝试使用(以下)子查询,但主查询失败...
FROM
(SELECT revenue FROM reports WHERE quarter = 'q2' AND fiscal_year = 2018) AS q,
(SELECT revenue FROM reports WHERE quarter = 'q1' AND fiscal_year = 2017) AS lq
Run Code Online (Sandbox Code Playgroud)
这里是DB Fiddle,可以帮助您理解问题和架构:
https://www.db-fiddle.com/f/eE8SNRojn45h7Rc1rPCEVN/4
当前简单查询.
SELECT
c.name, r.quarter, r.fiscal_year, r.revenue, r.taxes, r.employees
FROM
companies c
JOIN
reports r
ON
r.company_id = c.id
WHERE
c.is_marked = 1;
Run Code Online (Sandbox Code Playgroud)
预期结果(这是我需要的):
+---------+----------+----------------+----------+--------------+-----------+------------------+
| Name | Revenue | Revenue_change | Taxes | Taxes_change | Employees | Employees_change |
+---------+----------+----------------+----------+--------------+-----------+------------------+
| ABC …Run Code Online (Sandbox Code Playgroud) 赏金更新:马克已经得到了很好的答案.改编:=进入:,下面.但是,除了DBIx之外,我还在寻找类似的方案.我只对与任何东西兼容感兴趣.
我需要建议我在参数化SQL语句中为"扩展"占位符选择的语法.因为构建一些构造(IN子句)让我烦恼,我决定使用一些自动扩展为普通的语法快捷方式?占位符.
我喜欢他们.但我想打包它以便分发,并且问我自己是否容易理解.
基本上我的新占位符是??和:?(枚举参数)和:&和:,(:|以及::(对于命名占位符)具有以下用例:
-> db(" SELECT * FROM all WHERE id IN (??) ", [$a, $b, $c, $d, $e])
Run Code Online (Sandbox Code Playgroud)
该??扩展到?,?,?,?,?,...依赖于的$ args数到我的分贝()FUNC.这个很清楚,它的语法已经标准化了.Perls DBIx :: Simple也使用它.所以我很确定这是一个可以接受的想法.
-> db(" SELECT :? FROM any WHERE id>0 ", ["title", "frog", "id"]);
// Note: not actually parameterized attr, needs cleanup regex
Run Code Online (Sandbox Code Playgroud)
承认它.我只喜欢笑脸.基本上这个:?占位符将关联$ args扩展为普通列名.它实际上抛弃了任何$ args值.它实际上对于INSERT和??有时是有用的,有时对于IN子句也是有用的.但是在这里我已经想知道这种新语法是否合理,或者只是用词不当,因为它混合了:和?字符.但不知何故,它似乎很好地匹配语法方案.
-> db(" UPDATE some SET :, WHERE :& AND (:|) …Run Code Online (Sandbox Code Playgroud) 我需要创建一个自动在结果中添加虚拟行号的视图.这里的图形是完全随机的,我想要实现的是动态创建的最后一列.
> +--------+------------+-----+
> | id | variety | num |
> +--------+------------+-----+
> | 234 | fuji | 1 |
> | 4356 | gala | 2 |
> | 343245 | limbertwig | 3 |
> | 224 | bing | 4 |
> | 4545 | chelan | 5 |
> | 3455 | navel | 6 |
> | 4534345| valencia | 7 |
> | 3451 | bartlett | 8 |
> | 3452 | …Run Code Online (Sandbox Code Playgroud) 我正在尝试将在Microsoft SQL Server中创建的SQL脚本转换为使用链接服务器运行到可以在SQL过程中使用的脚本,我正在使用的脚本
ROW_NUMBER() OVER(ORDER BY [FIELDS])
Run Code Online (Sandbox Code Playgroud)
创建一个不依赖于自动增量的主键,当我尝试将代码保存为过程时,我得到此错误
错误1064(42000):您的SQL语法有错误:检查与您的MySQL服务器版本对应的手册,以便在[LINENO]行附近的'(ORDER BY [FIELDS])'附近使用正确的语法
显然错误是说ROW_NUMBER OVER不对,因为我删除了OVER位并得到一个错误,说ROW_NUMBER未定义
在我搜索的任何地方我得到的只是人们问SELECT语句的这个问题,而不是INSERT语句和答案大多数时间只是获取行数或插入最后一个id,所以我可以用来创建与ROW_NUMBER()在Microsoft Server中相同的数据
HI,
我昨天实际上发布了类似(或相同?)的问题,但我认为我需要发布一个新问题,因为我有一个简短而明确的问题.
我有下表.
id point
1 30
2 30
3 29
4 27
5 28
6 26
Run Code Online (Sandbox Code Playgroud)
我想要的是:
让所有用户按排名排序.用户#1和#2应该有1作为他们的排名值,因为他们都有30分
我想按用户ID查询排名.当我查询用户#1和#2时,我喜欢得到1作为我的排名的结果,因为他们都有30分
添加于:3/18
我尝试了Logan的查询,但得到了以下结果
id point rank
1 30 1
2 30 1
3 29 3
4 27 5
5 28 4
6 26 6
Run Code Online (Sandbox Code Playgroud) 我刚刚在网上看到MariaDB(SQLZoo使用的)基于MySQL.所以我认为我可以使用ROW_NUMBER()函数
但是,当我在SQLZoo中尝试此函数时:
SELECT * FROM (
SELECT * FROM route
) TEST7
WHERE ROW_NUMBER() < 10
Run Code Online (Sandbox Code Playgroud)
然后我收到这个错误:
错误:FUNCTION gisq.ROW_NUMBER不存在
介绍
我有一个使用排名的游戏的高分表.得分表表示当前的高分和玩家信息,并且最近的表表示用户的所有最近发布的分数,其可能是或可能不是新的最高分.
排名下降是通过计算玩家当前排名减去他们在达到最新最高分时的排名来计算的.
排名增加的计算方法是计算玩家在达到最新最高分时的排名减去他们达到之前最高分时的排名.
最后,如代码所示: $change = ($drop > 0 ? -$drop : $increase);
题
我使用以下两个查询结合一些PHP代码来计算排名变化.它工作得很好,但有时有点慢.
是否有办法优化或组合两个查询+ PHP代码?
我创建了第一个查询的SQL小提琴:http://sqlfiddle.com/#!9/30848/1
表格已经填充了内容,因此不应更改其结构.
这是当前的工作代码:
$q = "
select
(
select
coalesce(
(
select count(distinct b.username)
from recent b
where
b.istopscore = 1 AND
(
(
b.score > a.score AND
b.time <= a.time
) OR
(
b.score = a.score AND
b.username != a.username AND
b.time < a.time
)
)
), 0) + 1 Rank
from scores a
where a.nickname = ?) as …Run Code Online (Sandbox Code Playgroud) mysql ×8
sql ×6
php ×3
asp.net-mvc ×1
c# ×1
combinations ×1
database ×1
laravel ×1
mariadb ×1
mysqli ×1
oracle ×1
paging ×1
phpmyadmin ×1
rank ×1
ranking ×1
row-number ×1
select ×1
top-n ×1
view ×1