在WHERE中选择语法

时间:2012-04-27 15:34:54

标签: sql sql-server

如何在SELECT中使用WHERE语法,例如我有以下代码:

SELECT 
    blah...blah..
    ...
WHERE  
(
  (APM_AlertsAndReportsData.ApplicationName = 'instance: tomcat6_noram (SNMP)') AND 
  (APM_AlertsAndReportsData.ComponentName = 'Memory Heap Used (B)') AND 
  (APM_AlertsAndReportsData.StatisticData >= 1908932600)
)

这里我比较的值大于或等于1908932600。我想使用SELECT代替1908932600,因此它会自动比较值而不是查询中的静态代码。

3 个答案:

答案 0 :(得分:4)

您可以使用子查询,只需围绕它括号:

APM_AlertsAndReportsData.StatisticData >= (SELECT ... FROM ...)

请注意,它可能会慢慢运行,具体取决于您在子查询中执行的操作。使用JOIN可能更好。

答案 1 :(得分:3)

您需要WHERE子句中的“相关子查询”:

WHERE  
(
  (APM_AlertsAndReportsData.ApplicationName = 'instance: tomcat6_noram (SNMP)') AND 
  (APM_AlertsAndReportsData.ComponentName = 'Memory Heap Used (B)') AND 
  (APM_AlertsAndReportsData.StatisticData >= (SELECT SomeValue FROM SomeTable))
)

答案 2 :(得分:2)

这是一个简单的:

单值子查询

select * from Table1
where id = (select id from Table2 where Name = 'cool')

多值子查询

select * from Table1
where id IN (select id from Table2 where Name LIKE 'A%')

select * from Table1
where id NOT IN (select id from Table2 where Name LIKE 'A%')

相关子查询

select * from Table1
where exists (select 1 from Table2 where Table1.id = Table2.id)