SQL连接2个查询在同一个表中的一个

时间:2015-01-05 15:59:44

标签: sql

我有一张这样的表

IVA

id - taxa - name   - date
1  - 0.18 - normal - 1/1/2014
2  - 0    - none   - 1/1/2014 
3  - 0.23 - max    - 1/1/2013
4  - 0.16 - normal - 1/1/2015
...

我有一个产品IVA.id,我想知道当前日期的分类群是什么。

所以我必须两次查询这个表:

Select name 
from IVA 
where id = 1; (return me normal)

Select taxa 
from IVA 
where name = 'normal' 
  and date <= '12/12/2015'; 

我可以将这两个查询加入一个吗?

由于

4 个答案:

答案 0 :(得分:3)

请尝试:

Select taxa 
from IVA 
where name in (Select a.name from IVA a where a.id = 1) 
and date<='12/12/2015';

答案 1 :(得分:0)

取决于您正在使用的数据库引擎,但您可能希望查找数据库的UNION关键字。

答案 2 :(得分:0)

为什么不使用如下的子查询:

Select taxa 
from IVA 
where name=(select top 1 name from IVA where id = 1)
and date<='12/12/2015'; 

我认为如果有重复的ID,您可能会得到不同的名称,因此排名前1。 如果您想使用IN子句使用的所有名称:

Select taxa 
from IVA 
where name IN (select name from IVA where id = 1)
and date<='12/12/2015'; 

PS:前1名可能无法在所有情况下使用。它的引擎特定。

答案 3 :(得分:0)

您可以尝试以下方法:

SELECT i1.name, i1.taxa
  FROM iva i1, iva i2
 WHERE i1.date <= '12/12/2015'
   AND i1.name = i2.name
   AND i2.id = 1

您未在问题中指定DBMS,因此我不完全确定上述日期格式是否有效。