选择记录的多个实例

时间:2016-09-20 15:30:41

标签: sql intersystems-cache

我有一个包含很长标识符列表和各种其他数据的电子表格。我在电子表格上有一列我需要填写的另一个标识符。这是一个示例:

ID1  |  ID2  |  Date
5    |       |  ...
6    |       |  ...
6    |       |  ...
7    |       |  ...
9    |       |  ...
9    |       |  ...
9    |       |  ...
10   |       |  ...
10   |       |  ...
11   |       |  ...

我需要从数据库中的表中获取ID2。我可以轻松复制ID1列并使用文本编辑器将\r\n替换为',',然后运行SELECT ID1, ID2 FROM MyTable WHERE ID1 IN ('5,6,6,7,9,9,9,10,10,11')问题是结果只显示ID1的唯一值,这意味着我必须浏览电子表格并手动粘贴值。相反,我想要的是以下结果:

ID1  |  ID2  |  Date
5    |   a   |  ...
6    |   b   |  ...
6    |   b   |  ...
7    |   c   |  ...
9    |   e   |  ...
9    |   e   |  ...
9    |   e   |  ...
10   |   f   |  ...
10   |   f   |  ...
11   |   g   |  ...

这样我就可以复制并粘贴到电子表格中,所有行都会正确排列。

我尝试过这样的事情:

SELECT ID1, ID2 FROM MyTable a, ('5','6','6',...) b

但这似乎不起作用。我不知道还有什么可以尝试。

1 个答案:

答案 0 :(得分:0)

试图根据我从你的问题中抓住的内容来回答这个问题。我也在这里假设SQL Server。

您应该将现有的电子表格上传到数据库表,让我们调用该表OriginalTable。现在您的原始表格如下所示:

System.Diagnostics.Process process;
process = new System.Diagnostics.Process();
System.Diagnostics.ProcessStartInfo startInfo = new System.Diagnostics.ProcessStartInfo();
startInfo.WindowStyle = System.Diagnostics.ProcessWindowStyle.Maximized; //Change to Hidden after debug
startInfo.FileName = AppiumNodePath;
startInfo.Arguments =   AppiumJSPath + " --address " + AppiumServerIP + " --port " + currentAppiumPort + " --automation-name Appium --log-no-color --session-override --log C:\\test\\AppiumLog.txt";
process.StartInfo = startInfo;
process.Start();

接下来,我假设您有一个表,每个ID1都有相应的ID2。我们假设该表名为IDTable。可能看起来像这样:

ID1  |  ID2  |  Date
5    |       |  ...
6    |       |  ...
6    |       |  ...
7    |       |  ...
9    |       |  ...
9    |       |  ...
9    |       |  ...
10   |       |  ...
10   |       |  ...
11   |       |  ...

最后,运行如下查询:

ID1  |  ID2 
5    |  a 
6    |  b
7    |  c   
9    |  e      
10   |  f        
11   |  g