标签: rowcount

根据行ID查找排序中的行号,然后查找其邻居

说我有一些SELECT陈述:

SELECT id, name FROM people
   ORDER BY name ASC;
Run Code Online (Sandbox Code Playgroud)

我在people表中有几百万行,该ORDER BY子句可能比我在这里显示的要复杂得多(可能在十几列上运行).

我只检索行的一小部分(比如行1..11),以便在UI中显示它们.现在,我想解决以下问题:

  1. 找到给定的行数id.
  2. 显示之前的5个项目和连续的5个项目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从句用吨ORAND在状态.我必须反复这样做.使用我的测试数据,即使使用正确索引的列,这也需要数百毫秒,这太慢了.

是否有一些方法可以通过使用一些SQL:2003功能(如row_numberFirebird 3.0支持)来实现这一目的?我绝不是一个SQL大师,我需要一些指针.我可以创建一个缓存视图,其结果将包括排名/密集排名/行索引?

sql firebird sql-order-by rowcount rank

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

一个存储过程在另一个存储过程中的行数

我有各种存储过程。我需要一个存储过程来执行一个存储过程,然后仅返回行数(被调用过程返回的行数),并且需要用c#代码接收它。

最好的方法是什么?

情况:我有各种从c#代码调用的存储过程。现在出于另一个目的,我需要知道某个过程返回的行数(我不希望返回的行,我只需要行数)。我无法更改存储过程本身,因为我的许多C#代码都在使用它们,因此如果更改存储过程,事情可能会中断。这就是为什么我锁定一个过程,该过程将接受输入并(动态地)执行一个过程并返回行数,而不返回结果或行数。

我可以采取存储过程字符串并像执行

EXEC ('StoredProcedure @Keyword = ''' + @Key + '''')
Run Code Online (Sandbox Code Playgroud)

我在每个可能返回的行中都有一个ID作为列。我可以存储ID并对其进行计数,但是我不知道这是否是最好的主意。

我的数据库很大。我可以在c#中使用executenonquery(),但是当我用它执行任何存储过程时,它都返回-1。最好的方法是什么。谢谢。

c# sql stored-procedures rowcount executenonquery

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

NHibernate:如何在投影中选择根实体

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

https://nhibernate.jira.com/browse/NH-928

nhibernate projection rowcount data-paging nhibernate-criteria

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

如何计算Cakephp中表的总行数

如何计算表的总行数并将其传递给变量?例如,我有产品表,其中有10个产品.我想计算所有行并得到结果10并将其传递给变量$ rowcount.我该怎么做?

php cakephp rowcount

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

PHP PDO MySQL在没有行受影响时检查更新查询是否成功的正确方法

使用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)

php mysql sql pdo rowcount

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

JavaFX-8 - 如何获取TableView的行数?

如何获得a TableView中的a 行数TableCell?我试过了.getTableRow(),但这不是我需要的.我需要它来找出,如果它TableCell是最后一个Cell TableView.还是有另一种方法来解决这个问题吗?

问候

rowcount tableview tablecell javafx-8

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

Python Pandas根据列对行进行计数

如何基于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)

rowcount dataframe python-2.7 pandas

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

来自OracleDataReader的行数

任何人都可以告诉我如何从OracleDataReader.net 2.0中查找行数吗?

.net odp.net rowcount

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

使用PostgreSQL触发器和休眠时出现意外的行数

我有一个使用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)

postgresql triggers hibernate plpgsql rowcount

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

sql查询中的总行数--- sql server 2008

我的查询如下

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)

sql sql-server select rowcount sql-server-2008

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