我想使用sql
查询的结果,并根据结果发送另一个查询。
Exmaple(当然真正的实时查询更复杂):
table1: name, age
table2: name, age, field1, fieldN
首先查询:
select name, age from table1 where age > 18.
现在,我想查找table2中与第一个查询的多个结果字段匹配的所有条目。
重要提示:我想检索匹配所在的table2的完整行。
但是怎么样?
答案 0 :(得分:0)
基于MS sql server的查询构建
select t1.*
from table1 as t1
join table2 as t2 on t1.name=t2.name and t1.age=t2.age
where t2.age > 18
答案 1 :(得分:0)
如果您想根据匹配的列名自动加入,那么您可以使用NATURAL JOIN
:
WITH query1 AS (
SELECT age, name FROM table1 WHERE age > 18
)
SELECT age, name, t2.field1, t2.fieldN
FROM table2 t2 NATURAL JOIN query1;
现在,虽然通常不建议使用NATURAL JOIN
,因为它非常弱,因为使用它的查询很容易因架构更改而制动,对于手动即席查询或查询(例如查询)可能没问题以上,您可以使用显式列。在任何一种情况下,我建议反对它并使用公共连接样式:
WITH query1 AS (
SELECT age, name FROM table1 WHERE age > 18
)
SELECT t2.age, t2.name, t2.field1, t2.fieldN
FROM table2 t2 JOIN query1 q1 ON t2.age = q1.age AND t2.name = t1.name;
答案 2 :(得分:0)
现在我想:
Microsoft.Office.Interop.Outlook.PropertyAccessor pa = addr.PropertyAccessor;
smtpAddress = pa.GetProperty("http://schemas.microsoft.com/mapi/proptag/0x39FE001E").ToString();
答案 3 :(得分:0)
实际上这就是我想要的,但感谢您的帮助:
select * from table2 where (name, age) IN (
select name, age from table1 where age > 18
)