说我有一些SELECT陈述:
SELECT id, name FROM people
ORDER BY name ASC;
Run Code Online (Sandbox Code Playgroud)
我在people表中有几百万行,该ORDER BY子句可能比我在这里显示的要复杂得多(可能在十几列上运行).
我只检索行的一小部分(比如行1..11),以便在UI中显示它们.现在,我想解决以下问题:
id.id.一旦我解决了问题1,问题2很容易解决,因为如果我知道我要查找的项目1000在排序结果集中有行号(这是Firebird SQL方言),我就可以使用这样的东西:
SELECT id, name FROM people
ORDER BY name ASC
ROWS 995 TO 1005;
Run Code Online (Sandbox Code Playgroud)
我也知道,我能找到的等级通过计算所有一个我找前落入排了一排,但是这可能会导致很长的WHERE从句用吨OR和AND在状态.我必须反复这样做.使用我的测试数据,即使使用正确索引的列,这也需要数百毫秒,这太慢了.
是否有一些方法可以通过使用一些SQL:2003功能(如row_numberFirebird 3.0支持)来实现这一目的?我绝不是一个SQL大师,我需要一些指针.我可以创建一个缓存视图,其结果将包括排名/密集排名/行索引?
我有各种存储过程。我需要一个存储过程来执行一个存储过程,然后仅返回行数(被调用过程返回的行数),并且需要用c#代码接收它。
最好的方法是什么?
情况:我有各种从c#代码调用的存储过程。现在出于另一个目的,我需要知道某个过程返回的行数(我不希望返回的行,我只需要行数)。我无法更改存储过程本身,因为我的许多C#代码都在使用它们,因此如果更改存储过程,事情可能会中断。这就是为什么我锁定一个过程,该过程将接受输入并(动态地)执行一个过程并返回行数,而不返回结果或行数。
我可以采取存储过程字符串并像执行
EXEC ('StoredProcedure @Keyword = ''' + @Key + '''')
Run Code Online (Sandbox Code Playgroud)
我在每个可能返回的行中都有一个ID作为列。我可以存储ID并对其进行计数,但是我不知道这是否是最好的主意。
我的数据库很大。我可以在c#中使用executenonquery(),但是当我用它执行任何存储过程时,它都返回-1。最好的方法是什么。谢谢。
Ayende描述了一种非常好的获取页面计数的方法,以及一个查询中的特定数据页面:
http://ayende.com/blog/2334/paged-data-count-with-nhibernate-the-really-easy-way
他的方法看起来像:
IList list = session.CreateQuery("select b, rowcount() from Blog b")
.SetFirstResult(5)
.SetMaxResults(10)
.List();
Run Code Online (Sandbox Code Playgroud)
唯一的问题是这个例子是在HQL中,我需要在ICriteria查询中做同样的事情.要达到与ICriteria相当的水平,我需要做类似的事情:
IList list = session.CreateCriteria<Blog>()
.SetFirstResult(5)
.SetMaxResults(10)
.SetProjection(Projections.RootEntity(), Projections.SqlFunction("rowcount", NHibernateUtil.Int64))
.List();
Run Code Online (Sandbox Code Playgroud)
问题是没有Projections.RootEntity()这样的东西.有没有办法选择根实体作为投影列表中的投影之一?
是的,我知道我可以使用CriteriaTransform.TransformToRowCount(),但这需要执行两次查询 - 一次用于结果,一次用于行计数.使用Futures可以通过将其减少到一次往返来帮助一点,但它仍然在SQL Server上执行两次查询.对于密集查询,这是不可接受的.我想避免开销,并在同一查询中返回行计数和结果.
基本问题是:使用ICriteria,有没有办法同时选择根实体和其他一些投影?
编辑:一些相关链接:
https://nhibernate.jira.com/browse/NH-1372?jql=text%20~%20%22entity%20projection%22
nhibernate projection rowcount data-paging nhibernate-criteria
如何计算表的总行数并将其传递给变量?例如,我有产品表,其中有10个产品.我想计算所有行并得到结果10并将其传递给变量$ rowcount.我该怎么做?
使用php pdo和mysql时,确定更新查询是否成功的确定方法是什么?
在我的应用程序中,我更新了提交但是用户的项目总数,表格如下所示:
项目
userId | itemsAdded | itemsChecked | itemsUnChecked | itemsTotal
1 | 5 | 2 | 3 | 5
Run Code Online (Sandbox Code Playgroud)
因此,当我这样做时update items set itemTotals = itemsChecked+itemUnChecked,itemsTotal除非itemsAdded更改并且itemsUnChecked增加(2 + 3等于5,1 + 4也是5),否则列保持不变.
我曾经使用rowCount()来检查查询是否成功,但在这种情况下,由于itemsTotal列保持不变,因此无法确定sql是否成功.
$query = $conn->prepare($sql);
$query->execute(array(
":itemCount" => $itemCount
":itemId" => $itemId
));
$queryCount = $query->rowCount();
if($queryCount == 1) {
echo 'Updated succeeded';
} else {
echo 'Updated failed!';
}
Run Code Online (Sandbox Code Playgroud)
我也可以用:
$query = $conn->prepare($sql);
$result = $query->execute(array(
":itemCount" => $itemCount
":itemId" => $itemId …Run Code Online (Sandbox Code Playgroud) 如何获得a TableView中的a 行数TableCell?我试过了.getTableRow(),但这不是我需要的.我需要它来找出,如果它TableCell是最后一个Cell TableView.还是有另一种方法来解决这个问题吗?
问候
如何基于Python熊猫中的一列获取行数。例如,我有一个这样的数据框:
Name NameTitle Sex
John Dr m
Mona Dr f
Mary Mrs f
Tom Mr m
Jack Mr m
Leila Ms f
Soro Ms f
Christi Ms f
Mike Mr m
Run Code Online (Sandbox Code Playgroud)
我需要根据性别计算名字标题的数量。所需的输出将是这样的:
NameTitle Sex Count
Dr m 1
Dr f 1
Mrs f 1
Mr m 3
Ms f 3
Run Code Online (Sandbox Code Playgroud) 任何人都可以告诉我如何从OracleDataReader.net 2.0中查找行数吗?
我有一个使用Hibernate的应用程序,我必须包含一个触发器,将所有在表中修改或删除的行复制到历史表中.包含PostgreSQL触发器后,应用程序无法正常工作并发出此错误:
org.springframework.orm.hibernate3.HibernateOptimisticLockingFailureException:批量更新从update [0]返回意外的行数; 实际行数:0; 预期:1; 嵌套异常是org.hibernate.StaleStateException:批量更新从update [0]返回意外的行数; 实际行数:0; 预期:1
谷歌搜索了一段时间之后我发现这个错误是因为Hibernate通过sql update检查受影响的行,并且返回的行不是预期的行,因为触发器也进行了更新.我已经看到可以通过关闭触发器上的rowcount来解决这个问题.但PostgreSQL似乎没有'set nocount on'的替代品.
如何在PostgreSQL的触发器中解决问题,如下所示?
谢谢
CREATE OR REPLACE FUNCTION my_trigger_fnc() RETURNS TRIGGER AS $my_trigger_fnc$
DECLARE
nowDate timestamp := now();
BEGIN
INSERT INTO historial_table (
id,
date_now,
id_mytable,
--some other fields
...
)
VALUES (
nextVal('historial_table_seq'),
nowDate,
OLD.id_mytable
--some other fields
...
);
RETURN NEW;
END;
$my_trigger_fnc$ LANGUAGE plpgsql;
CREATE TRIGGER my_trigger BEFORE UPDATE OR DELETE
ON my_table FOR EACH ROW
EXECUTE PROCEDURE my_trigger_fnc();
Run Code Online (Sandbox Code Playgroud)
更新:表格就像这样:
CREATE TABLE historial_table(
id integer, …Run Code Online (Sandbox Code Playgroud) 我的查询如下
BEGIN
WITH MyCTE
AS (
SELECT T.MusicAlbumTitle
,D.musicTitle
,D.mVideoID
,D.musicFileName
,T.ReleaseDate AS ReleasedDate
,D.MusicLength
,D.musicSinger
,D.MusicVideoID
,D.ExternalLink
,D.CoverImg
,ROW_NUMBER() OVER (
PARTITION BY D.MusicVideoID ORDER BY D.mVideoID
) AS row_num
FROM dbo.Music_Video T
JOIN dbo.Music_Video_Details D ON T.MusicVideoID = D.MusicVideoID
WHERE T.PortalID = @PortalID
AND T.CultureCode = @CultureCode
AND T.ComingSoon <> 1
GROUP BY T.MusicAlbumTitle
,D.musicTitle
,D.mVideoID
,T.ReleaseDate
,D.musicFileName
,D.MusicLength
,D.musicSinger
,D.MusicVideoID
,D.ExternalLink
,D.CoverImg
)
SELECT a.mVideoID
,a.MusicVideoID
,a.musicFileName
,a.MusicAlbumTitle
,a.ReleasedDate
,a.row_num
,a.CoverImg
,a.ExternalLink
,a.musicTitle
,a.MusicLength
FROM MyCTE a …Run Code Online (Sandbox Code Playgroud) rowcount ×10
sql ×4
php ×2
.net ×1
c# ×1
cakephp ×1
data-paging ×1
dataframe ×1
firebird ×1
hibernate ×1
javafx-8 ×1
mysql ×1
nhibernate ×1
odp.net ×1
pandas ×1
pdo ×1
plpgsql ×1
postgresql ×1
projection ×1
python-2.7 ×1
rank ×1
select ×1
sql-order-by ×1
sql-server ×1
tablecell ×1
tableview ×1
triggers ×1