SQL 将来自同一 table 的 2 个查询合二为一
SQL join 2 queries in one from same table
我有一个table这样的
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
,我想知道当前日期的分类单元是什么。
所以我必须查询这个 table 两次:
Select name
from IVA
where id = 1; (return me normal)
Select taxa
from IVA
where name = 'normal'
and date <= '12/12/2015';
我可以将这两个查询合并为一个吗?
谢谢
取决于您使用的数据库引擎,但您可能需要查找数据库的 UNION 关键字。
请尝试:
Select taxa
from IVA
where name in (Select a.name from IVA a where a.id = 1)
and date<='12/12/2015';
为什么不使用如下子查询:
Select taxa
from IVA
where name=(select top 1 name from IVA where id = 1)
and date<='12/12/2015';
我假设如果有重复的 ID,您可能会得到不同的名称,因此是 Top 1。
如果您想使用 IN 子句中使用的所有名称作为 :
Select taxa
from IVA
where name IN (select name from IVA where id = 1)
and date<='12/12/2015';
PS : Top 1 可能不适用于所有场景。它是特定于引擎的。
您可以尝试以下方法:
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,所以我不能完全确定上述日期格式是否有效。
我有一个table这样的
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
,我想知道当前日期的分类单元是什么。
所以我必须查询这个 table 两次:
Select name
from IVA
where id = 1; (return me normal)
Select taxa
from IVA
where name = 'normal'
and date <= '12/12/2015';
我可以将这两个查询合并为一个吗?
谢谢
取决于您使用的数据库引擎,但您可能需要查找数据库的 UNION 关键字。
请尝试:
Select taxa
from IVA
where name in (Select a.name from IVA a where a.id = 1)
and date<='12/12/2015';
为什么不使用如下子查询:
Select taxa
from IVA
where name=(select top 1 name from IVA where id = 1)
and date<='12/12/2015';
我假设如果有重复的 ID,您可能会得到不同的名称,因此是 Top 1。 如果您想使用 IN 子句中使用的所有名称作为 :
Select taxa
from IVA
where name IN (select name from IVA where id = 1)
and date<='12/12/2015';
PS : Top 1 可能不适用于所有场景。它是特定于引擎的。
您可以尝试以下方法:
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,所以我不能完全确定上述日期格式是否有效。