dsndm82062 2013-06-11 13:39
浏览 238
已采纳

SQL:选择数据库的表中的最后一个id

I have the following query in my php script:

SELECT last_value FROM sys.identity_columns WHERE OBJECT_NAME(OBJECT_ID) = 'MYTABLE' AND last_value IS NOT NULL

This works great, it returns the last id from MYTABLE which is what I need.

But, as I'm going to have more than one database I should modify the query to select the database where MYTABLE is.

I'm doing:

SELECT last_value FROM sys.identity_columns WHERE OBJECT_NAME(OBJECT_ID) = 'mydatabase.dbo.MYTABLE' AND last_value IS NOT NULL

But this does not work, I get nothing in return.

Any ideas?

Thanks a lot!

  • 写回答

2条回答 默认 最新

  • dounayan3643 2013-06-11 13:48
    关注

    If you need to pass the database name as a variable IDENT_CURRENT accepts a database qualified object name. e.g.:

    SELECT  IDENT_CURRENT('mydatabase.dbo.MYTABLE');
    

    As an unrelated aside it would be better to use:

    WHERE OBJECT_ID = OBJECT_ID(N'MYTABLE');
    

    Instead of

    WHERE OBJECT_NAME(OBJECT_ID) = 'MYTABLE'
    

    Since if MYTABLE was not in the default schema, it would fail, consider a table MYSCHEMA.MYTABLE. This returns no rows

    WHERE OBJECT_NAME(OBJECT_ID) = 'MYSCHEMA.MYTABLE'
    

    Whereas this would:

    WHERE OBJECT_ID = OBJECT_ID(N'MYSCHEMA.MYTABLE');
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(1条)

报告相同问题?

悬赏问题

  • ¥15 如何用Labview在myRIO上做LCD显示?(语言-开发语言)
  • ¥15 Vue3地图和异步函数使用
  • ¥15 C++ yoloV5改写遇到的问题
  • ¥20 win11修改中文用户名路径
  • ¥15 win2012磁盘空间不足,c盘正常,d盘无法写入
  • ¥15 用土力学知识进行土坡稳定性分析与挡土墙设计
  • ¥70 PlayWright在Java上连接CDP关联本地Chrome启动失败,貌似是Windows端口转发问题
  • ¥15 帮我写一个c++工程
  • ¥30 Eclipse官网打不开,官网首页进不去,显示无法访问此页面,求解决方法
  • ¥15 关于smbclient 库的使用