我有一个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 747或786)
我尝试:
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) 我有以下表格:
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) 我有一个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 …
作为新手vim用户,我曾经d[count]<Enter>删除过行.
它让我感到奇怪的是,总有数+ 1行被删除.
如果我想删除2行,我输入d1,3行d2,...
我终于花时间试图理解为什么,看起来我应该一直在使用:d<count>.
这确实乞求了这个问题,为什么:d1<Enter><>d1<Enter>
如果要存储的XML文档总是小于64 KiB(即AFAIK,VARCHAR的限制),那么VARCHAR和TEXT列类型的优缺点是什么呢?
我有两个包含以下示例数据的表:
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) 我做了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表达式之前发生.
我不确定这是否相关,但对于非本地人来说语言有点沉重,所以也许是这样?
我一直在将Vim用于文本编辑器中的notepad ++。我想知道是否有一种方法可以在vim中执行“快速列插入”。
据我所知,我们可以按照以下步骤在vim中执行列插入:
然后执行列插入
有没有办法删除步骤4并直接执行列插入?
同事将 32 位 C++ 应用程序转换为 64 位。出于测试目的,现在的想法是指示堆管理器仅返回 64 位范围内的地址。
\n\n在网上搜索解决方案似乎并没有给出非常可靠的结果:
\n\nMSDN 论坛VirtualAlloc()建议在 CRT 初始化之前使用。但是,我不明白为什么不应该返回指向高地址的指针,而将底部 4 GB 留空。
Raymond Chen 表示,Windows 7 有一个名为 的开关Allocation\xc2\xadPreference ,可以设置为MEM_TOP_DOWN。然而,这适用于整个系统,因此需要重新启动,这很不方便。(MSDN 上也有描述)。
我在应用程序验证器中进行了深入研究,并在堆条目的属性中发现了一些有趣的选项:
\n\n\n\n如您所见,我修改了SizeStart和SizeEnd以及AddrStart和AddrEnd。
\n\n很遗憾,
\n\n虽然地址高于输入的值,但堆的大小并未更改:
\n\nTermination on corruption : ENABLED\n Heap Flags Reserv Commit Virt Free List UCR Virt …Run Code Online (Sandbox Code Playgroud) 是否可以评论宏并重放它.
例
代替
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)