如何从mssql随机取出一条记录,看似很简单的问题

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何从mssql随机取出一条记录,看似很简单的问题相关的知识,希望对你有一定的参考价值。

参考技术A 项目中客户要求随机取一个电话号码用来外呼,就试出这么个方法:
select top 1 * from 表名 order by newid()
重点在于newid()生产随机值,取多条则改成具体数量即可。

呵呵,原因是NEWID()为表是的每一行数据在内存里生成一个GUID。而因为GUID的值唯一而很随机,这样的话按GUID排序取出来的数据相对的也很随机。
除了能随机的取出一条数据,你还可以:

-- 随机取出表上的任意条数据,例如100
SELECT TOP 100 *
FROM Table1
ORDER BY NEWID()

-- 随机取出表上的10%的数据
SELECT TOP 10 PERCENT *
FROM Table1
ORDER BY NEWID()
参考技术B SELECT TOP(1) * FROM [表名] ORDER BY newid() 参考技术C select top 1 * from 表名 order by newid()

主表插入一条记录,取出主表的记录主键,赋值给予从表多条记录使用

主表插入一条记录,取出主表的记录主键,赋值给予从表多条记录使用

 

public void CreateWorkOrdGrid(Pp_WorkOrd_Hd headObject, List<Pp_WorkOrd_Dt> bodyObject)
        {
            //方式一
            using (var transction = project.Database.BeginTransaction())
            {
                project.Pp_WorkOrd_Hd.Add(headObject);
                foreach (Pp_WorkOrd_Dt a in bodyObject)
                {
                    a.Pp_WorkOrd_Hd = headObject;
                    project.Pp_WorkOrd_Dt.Add(a);
                }
                project.SaveChanges();
                transction.Commit();
            }
            //方式二
            using (var scope = new TransactionScope())
            {
                project.Pp_WorkOrd_Hd.Add(headObject);
                project.SaveChanges();
                foreach (Pp_WorkOrd_Dt a in bodyObject)
                {
                    a.Pp_WorkOrd_Hd = headObject;
                    project.Pp_WorkOrd_Dt.Add(a);
                }
                project.SaveChanges();
                scope.Complete();
            }
    }    

  

以上是关于如何从mssql随机取出一条记录,看似很简单的问题的主要内容,如果未能解决你的问题,请参考以下文章

数据库取中间几条记录

sql如何根据时间取出最新的数据记录

如何从记事本文件中取出数据并将其放入用户定义的函数中?

主表插入一条记录,取出主表的记录主键,赋值给予从表多条记录使用

Python--从集合中随机取出一个元素

Python--从集合中随机取出一个元素