小编Tan*_*ner的帖子

使用带有CTE的NEWID()来生成行的随机子集会产生奇数结果

我在存储过程中编写了一些SQL,以将数据集减少到我想要报告的有限随机行数.

报告以a开头Group,Users并应用过滤器来指定所需的随机行总数(@SampleLimit).

为了达到预期的效果,我首先创建一个CTE(临时表):

  • top(@SampleLimit)应用
  • group by UserId (因为UserID出现多次)
  • order by NEWID() 将结果以随机顺序排列

SQL:

; with cte_temp as 
       (select top(@SampleLimit) UserId from QueryResults 
        where (GroupId = @GroupId)
        group by UserId order by NEWID()) 
Run Code Online (Sandbox Code Playgroud)

一旦我有了这个结果集,然后我删除UserId是NOT IN在上一步中创建的CTE的任何结果.

delete QueryResults 
where (GroupId = @GroupId) and (UserId not in(select UserId from cte_temp))
Run Code Online (Sandbox Code Playgroud)

我遇到的问题是,我不时得到的结果比指定的结果多,@SampleLimit而且其他时候完全符合预期.

我已经尝试分解SQL并在应用程序之外执行它,我无法重现该问题.

我正在做的事情有什么根本性的错误可以解释为什么我偶尔会得到更多我要求的结果?

为了完整 - 我的重新考虑的解决方案基于以下答案:

select top(@SampleLimit) UserId into #T1
from  QueryResults
where (GroupId = @GroupId)
group by UserId
order …
Run Code Online (Sandbox Code Playgroud)

sql-server stored-procedures newid sql-server-2008-r2

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

将XML节点转换为SQL Server中的行

考虑以下示例:

declare @somexml as xml

set @somexml = '
<Settings>
    <Users>
        <ID>1</ID>
        <ID>2</ID>
        <ID>3</ID>
        <ID>4</ID>
        <ID>5</ID>
    </Users>
</Settings>'
Run Code Online (Sandbox Code Playgroud)

上面XML有一些ID值,我需要将这些值转换为可在临时表中执行连接的数据行。

我不能完全正确地理解语法,我已经尝试了许多示例:

SELECT T.r.value('.','int') as id
FROM @somexml.nodes('/Settings/Users') T(r)
Run Code Online (Sandbox Code Playgroud)

返回值:

|ID    |
|------|
|12345 |
Run Code Online (Sandbox Code Playgroud)

下列:

SELECT T.r.query('.') as id
from @somexml.nodes('/Settings/Users/ID') as T(r) 
Run Code Online (Sandbox Code Playgroud)

返回值:

|ID         |
|-----------|
|<ID>1</ID> |
|<ID>2</ID> |
|<ID>3</ID> |
|<ID>4</ID> |
|<ID>5</ID> |
Run Code Online (Sandbox Code Playgroud)

我越来越近了,但是我想删除XML标签以保留ID值,如下所示:

|ID |
|---|
| 1 |
| 2 |
| 3 |
| 4 |
| 5 …
Run Code Online (Sandbox Code Playgroud)

xml sql-server sql-server-2012

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

C#foreach在2个值之间循环

如何使用foreach语句在用户给出的2个值之间循环?

我正在创建一个扫描端口的应用程序,所以我希望用户指定要搜索的端口; 这里有一些不起作用的示例代码,但应该可以帮助您理解我在寻找的内容:

int port1 = Int32.Parse(TextBox1.Text);
int port2 = Int32.Parse(TextBox2.Text);

foreach(int between port1 and port2)
{
  //do something 
}
Run Code Online (Sandbox Code Playgroud)

有关如何做到这一点的任何建议?

c# int foreach port visual-c#-express-2010

2
推荐指数
2
解决办法
1010
查看次数

在按键和单击事件上更新observable

我有一个看起来像这样的值绑定:

<textarea class="form-control" placeholder="Comments" rows="10" data-bind="value: $root.GetTabComment($data).Comment, valueUpdate: 'keyup'"></textarea>
Run Code Online (Sandbox Code Playgroud)

我使用的原因keyup是因为我有一个"按键输出"系统设置.这在用户键入时效果很好,但是如果他们通过拼写检查来纠正拼写(使用鼠标点击而根本没有键盘),则绑定将不会更新.

绑定变量Comment声明为:

Comment = ko.observable("").extend({throttle: 1000})

订阅很简单:

Comment.subscribe(function(){
  //save code
});
Run Code Online (Sandbox Code Playgroud)

当点击一个按钮时,有什么方法可以强制绑定获取文本区域的当前值吗?

knockout-2.0 knockout.js

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

找不到数据类型布尔值

创建表时,我收到以下错误消息。

消息 2715,级别 16,状态 7,第 1 行 列、参数或变量 #4:找不到数据类型布尔值。

尝试使用此脚本时:

create table artists ( artist_id    int, 
                       artist_name  varchar(60), 
                       artist_dob   datetime, 
                       poster_in_stock  boolean ) 
Run Code Online (Sandbox Code Playgroud)

对我做错了什么有什么建议吗?

sql-server sql-server-2005

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

2 个数字相除返回 0

我正在尝试除以 2 个计数以返回百分比。

返回以下查询0

select (
    (select COUNT(*) from saxref..AuthCycle
         where endOfUse is null and addDate >= '1/1/2014') / 
    (select COUNT(*) from saxref..AuthCycle 
         where addDate >= '1/1/2014')
    ) as Percentage
Run Code Online (Sandbox Code Playgroud)

我应该打石膏吗?

sql sql-server sum

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

DISTINCT关键字不适用于SQL Server中的图像数据类型

我正在使用DISTINCTSQL查询,同时使用以下查询从SQL Server表中获取记录。

SELECT  DISTINCT firstname, lastname, profileImage 
from employee
Run Code Online (Sandbox Code Playgroud)

我的表格profileImageimage数据类型在哪里。

问题:

当我尝试从DISTINCT查询中使用表中获取数据时,出现以下错误。

消息421,级别16,状态1,行1无法将图像数据类型选择为DISTINCT,因为它不可比较。

当我DISTINCT从查询中删除关键字时,它可以正常工作。

为什么会这样?

c# sql sql-server sql-server-2008

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

如何在Navbar中居中品牌/形象

我整个早上都在用这个小东西苦苦挣扎.我尝试将中心放在.navbar-brand整个导航栏的中间位置Bootstrap 3.

有人能解开我的谜团吗?

代码:

<nav class="navbar navbar-default navbar-fixed-top" role="navigation">
      <div class="container-fluid">
        <div class="navbar-header">
          <button type="button" class="navbar-toggle collapsed" data-toggle="collapse" data-target="#navbar" aria-expanded="false" aria-controls="navbar">
            <span class="sr-only">Toggle navigation</span>
            <span class="icon-bar"></span>
            <span class="icon-bar"></span>
            <span class="icon-bar"></span>
          </button>
          <a class="navbar-brand" href="#"><img src="img/logo.png" alt=" "/></a>
        </div>
        <div id="navbar" class="navbar-collapse collapse">
          <ul class="nav navbar-nav">
            <li class="active"><a href="#">Home</a></li>
            <li><a href="add/">Add your Channel</a></li>
          </ul>
        </div><!--/.nav-collapse -->
      </div>
</nav>
Run Code Online (Sandbox Code Playgroud)

预览:GTA5CH.AT/twitch

我想在导航栏中间/中心的标识,怎么样?

html css centering twitter-bootstrap-3

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

更新列值为True且时间戳列为MAX

我想更新boolean列值的单个最新行True.

boolvaltimestamp在表我的两列.

boolval  timestamp
--------------------------------
True     1998-01-02 00:00:00.000    
False    1999-01-02 00:00:00.000    
False    2000-01-02 00:00:00.000    
True     2001-01-02 00:00:00.000 --(Given this data, I want to update this row)    
False    2006-01-02 00:00:00.000 
Run Code Online (Sandbox Code Playgroud)

考虑这个伪代码我想做什么..

UPDATE tablename SET boolval='False' WHERE boolval='True' AND timestamp IS MAX;
Run Code Online (Sandbox Code Playgroud)

AND timestamp IS MAX 是不正确的语法,导致该语句无效.

mysql sql sql-server sql-update

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

更新除一之外的重复行

我有一个名为的表simple_data,在名为 的列中有数百万个手机号码MSISDN,但它包含重复项。

所有行都有一个FLAG设置为零的列。

我想通过将FLAG值设置为2除一行来更新所有重复的行。

CREATE TABLE `wt_simple_data` (
  `SIMPLEID` int(10) NOT NULL AUTO_INCREMENT,
  `CAMPID` bigint(20) NOT NULL,
  `MSISDN` bigint(20) NOT NULL,
  `FLAG` enum('0','1','2') DEFAULT '0' COMMENT '0 FOR NOT SENT, 1 FOR SENT',
  PRIMARY KEY (`SIMPLEID`)

) ENGINE=InnoDB  DEFAULT CHARSET=latin1
Run Code Online (Sandbox Code Playgroud)

一些示例数据:

SIMPLEID  CAMPID     MSISDN        FLAG    
 15        311      9874123411      0    
 16        311      9874123411      0    
 17        311      9874123411      0    
 18        311      9874123412      0    
 19        311      9874123412      0    
 20        311      9874123413      0    
 21 …
Run Code Online (Sandbox Code Playgroud)

mysql sql

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