查询表的一个城镇中的两列

时间:2018-04-28 23:20:35

标签: sql oracle sqlplus

我觉得应该做一件简单的事情,但似乎无法找到答案。

我从客户那里获得了一份清单 例如name timestamp

我想将它们放在临时表中,然后依次查询它们,例如

select reading where reading_table 
where name = t.c1 row1 and timestamp =t.c2 row1

然后循环遍历表格中的每个条目

我可以硬编码客户端文件中的每个条目作为选择,但认为应该有更好的方法来执行此操作,因为格式化是硬编码时的问题,并且可能没有为其中一些找到行。

e.g。

select reading where reading_table 
where name = row1 name and timestamp = row1 timestamp
select reading where reading_table 
where name = row2 name and timestamp = row2 timestamp

。 。

select reading where reading_table 
where name = lastrow name and timestamp = lastrow timestamp

如果它只是一列,我会使用IN,但不确定2列是什么。

1 个答案:

答案 0 :(得分:1)

通常您应该使用JOIN运算符。但无论如何你非常接近:

  

如果它只是一列,我会使用IN但不确定2列是什么。

IN支持多列。

SELECT reading 
FROM reading_table 
WHERE (name, timestamp) IN (SELECT name, timestamp FROM client);

警告!仅当两列都定义为NOT NULL时才会起作用。