小编Lie*_*ers的帖子

T-SQL如何从一列中选择没有重复值的行?

我有一个2列的表 ID, ID_PROJ_CSR

该表的内容是:

ID     ID_PROJ_CSR
------------------
747    222   <
785    102
786    222   <
787    223
788    224
Run Code Online (Sandbox Code Playgroud)

我想选择ID,但是如果ID_PROJ_CSR中的任何值是重复的,我需要选择包含该重复值的行的任何ID(在该示例中,选择ID 747786)

我尝试:

SELECT * FROM my_table tab 
WHERE tab.id_proj_csr = (SELECT TOP 1 id_proj_csr
                         FROM my_table mt
                         WHERE mt.id_proj_csr = tab.id_proj_csr)
Run Code Online (Sandbox Code Playgroud)

sql t-sql sql-server

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

SELECT DISTINCT用于数据组

我有以下表格:

ID  Data
1   A
2   A
2   B
3   A
3   B
4   C
5   D 
6   A
6   B
Run Code Online (Sandbox Code Playgroud)

换句话说,我每个ID都有一组数据.您会注意到数据组(A,B)多次出现.我想要一个可以识别不同数据组并对其进行编号的查询,例如:

DataID     Data
101        A
102        A
102        B
103        C
104        D
Run Code Online (Sandbox Code Playgroud)

因此,DataID 102将类似于数据(A,B),DataID 103将类似于数据(C)等.为了能够以这种形式重写我的原始表:

ID   DataID
1    101
2    102
3    102
4    103
5    104
6    102
Run Code Online (Sandbox Code Playgroud)

我怎样才能做到这一点?


PS.用于生成第一个表的代码:

CREATE TABLE #t1 (id INT, data VARCHAR(10))
INSERT INTO #t1
SELECT 1, 'A'
UNION ALL SELECT 2, 'A'
UNION ALL SELECT 2, 'B'
UNION ALL SELECT 3, …
Run Code Online (Sandbox Code Playgroud)

sql t-sql sql-server-2008 distinct-values

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

多列SQL过滤

我有一个MySQL表,我想查询其行列的是一组特定的。例如,假设我的表如下所示:

id | f1  | f2
-------------    
1  | 'a' | 20
2  | 'b' | 20
3  | 'a' | 30
4  | 'b' | 20
5  | 'c' | 20
Run Code Online (Sandbox Code Playgroud)

现在,我希望提取对(f1, f2)为 ('a',30) 或 ('b', 20) 的行,即第 2,3,4 行。我还希望使用“IN”样式过滤器来完成,因为我可能有很多对要获取。如果我尝试类似的事情:

SELECT * FROM my_table WHERE f1 IN ('a','b') AND f2 IN (30, 20)

我得到了在 IN 子句中为 f1 和 f2 指定的值的笛卡尔积,即具有 f1 = 'a' 或 'b' 和 f2 = 30, 20 的所有可能组合的行,因此第 1 行也被选中。

简而言之,我需要类似的东西:

SELECT …

mysql sql

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

区别:d [count]和d [count]

作为新手vim用户,我曾经d[count]<Enter>删除过行.
它让我感到奇怪的是,总有数+ 1行被删除.
如果我想删除2行,我输入d1,3行d2,...

我终于花时间试图理解为什么,看起来我应该一直在使用:d<count>.

这确实乞求了这个问题,为什么:d1<Enter><>d1<Enter>

vim

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

使用VARCHAR vs TEXT在MySQL中存储小型XML文档的优缺点是什么?

如果要存储的XML文档总是小于64 KiB(即AFAIK,VARCHAR的限制),那么VARCHAR和TEXT列类型的优缺点是什么呢?

mysql sql database

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

如何在具有外部联接和分组依据的查询中包含NULL值

我有两个包含以下示例数据的表:

Table 1: `item_name`
| item_id | item_desc |
| 1       | apple     |
| 2       | orange    |
| 3       | banana    |
| 4       | grape     |
| 5       | mango     |

Table 2: `user_items`
| user_id | item_id |
| 127     | 1       |
| 127     | 2       |
| 127     | 4       |
| 128     | 1       |
| 128     | 5       |
Run Code Online (Sandbox Code Playgroud)

我正在尝试使用以下查询选择user_id 127和128中的每个item_id以及相应的item_desc:

SELECT IFNULL(COUNT(ui.user_id), 0) AS total, in.item_desc 
FROM user_items AS ui 
RIGHT …
Run Code Online (Sandbox Code Playgroud)

mysql sql

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

始终评估CASE THEN子句

我做了SELECT它使用CASE到nvarchar的值转换成合适的类型,像这样:

SELECT CASE 
    WHEN @propType = 'money' THEN convert(money, datavalue)
    [...]
    ELSE datavalue
END
FROM [...]
Run Code Online (Sandbox Code Playgroud)

然而,它似乎convert总是执行,即使@propType等于金钱.可运行的例子:

declare @proptype nvarchar(50)= 'nvarchar'
declare @val nvarchar(10) = 'test'
select 
    case @proptype
        when 'money' then convert(money, @val)
        else @val
    end
Run Code Online (Sandbox Code Playgroud)

为什么会这样,我怎么能绕过它呢?MSDN文档说明了这一点:

CASE语句按顺序评估其条件,并在满足条件的第一个条件下停止.在某些情况下,在CASE语句接收表达式的结果作为其输入之前,将计算表达式.评估这些表达式的错误是可能的.首先评估出现在CASE语句的WHEN参数中的聚合表达式,然后提供给CASE语句.例如,以下查询在生成MAX聚合的值时会产生除零错误.这在评估CASE表达式之前发生.

我不确定这是否相关,但对于非本地人来说语言有点沉重,所以也许是这样?

sql sql-server formatting sql-server-2008-r2

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

vim:快速列插入

我一直在将Vim用于文本编辑器中的notepad ++。我想知道是否有一种方法可以在vim中执行“快速列插入”。

据我所知,我们可以按照以下步骤在vim中执行列插入:

  1. 移到该位置
  2. 进入列可视模式 CTRL+v
  3. 选择列 jk
  4. 进入列插入模式 shift+i
  5. 插入文字
  6. 类型 Esc

然后执行列插入

有没有办法删除步骤4并直接执行列插入?

vim

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

强制堆分配超过 4 GB

同事将 32 位 C++ 应用程序转换为 64 位。出于测试目的,现在的想法是指示堆管理器仅返回 64 位范围内的地址。

\n\n

在网上搜索解决方案似乎并没有给出非常可靠的结果:

\n\n\n\n

我在应用程序验证器中进行了深入研究,并在条目的属性中发现了一些有趣的选项:

\n\n

应用验证器

\n\n

如您所见,我修改了SizeStartSizeEnd以及AddrStartAddrEnd

\n\n

很遗憾,

\n\n
    \n
  1. 这些文本框不接受 64 位地址
  2. \n
  3. 这些设置似乎没有效果
  4. \n
\n\n

虽然地址高于输入的值,但堆的大小并未更改:

\n\n
Termination on corruption : ENABLED\n          Heap     Flags   Reserv  Commit  Virt   Free  List   UCR  Virt …
Run Code Online (Sandbox Code Playgroud)

c++ windows 64-bit application-verifier

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

如何评论VIM宏

是否可以评论宏并重放它.

代替

  dddwj
Run Code Online (Sandbox Code Playgroud)

我想评论并执行以下片段

  dd # Delete line
  dw # Delete word
  j  # Move to next line
Run Code Online (Sandbox Code Playgroud)

一些背景

我们使用PICT生成测试用例输入(全对测试).由于这是一个迭代过程,因此生成代码的宏需要在后续运行之间进行调整.当一切都在一行上而没有注释时,很难修改宏.

PICT运行的输出可能是这样的:

1 cInstallationX Pu380
2 cInstallationY U400
Run Code Online (Sandbox Code Playgroud)

可以用宏转换成测试用例

procedure TWatchIntegrationTests.Test1;
begin
  //***** Setup
  builder
    .withInstallation(cInstallationX)
    .withIsotope(Pu380)
  .Build;

  //***** Execute
  CreateAndCollectWatches;

  //***** Verify
  VerifyThat
    .toDo;
end;

procedure TWatchIntegrationTests.Test2;
begin
  //***** Setup
  builder
    .withInstallation(cInstallationY)
    .withIsotope(U400)
  .Build;

  //***** Execute
  CreateAndCollectWatches;

  //***** Verify
  VerifyThat
    .toDo;
end;
Run Code Online (Sandbox Code Playgroud)

vim macros editor

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