如何使用涉及第二个表的条件编写SQL查询?

时间:2009-07-17 19:31:43

标签: sql join conditional

表1
...
LogEntryID *PrimaryKey*

ThresholdID - - - 链接到应用于此日志条目的适当阈值 ......

表2
...
ThresholdID *PrimaryKey*
阈值
......

所有字段都是整数 “......”的东西在那里表明这些表格比这更具有信息量。出于某种原因,它们以这种方式设置,此时我无法更改它。

我需要编写一个SQL语句来从 Table1 中选择每个记录,其中该特定日志记录中的Value字段小于<的链接记录中的Threshold字段b> 表2 的。

我对SQL很新,所以我知道这是一个基本问题 如果有人能告诉我这个SQL语句是如何构建的,那将非常感激。

5 个答案:

答案 0 :(得分:4)

SELECT T1.*
  FROM Table1 T1
  JOIN Table2 T2 ON T2.ThresholdID = T1.ThresholdID
 WHERE T2.Threshold > T1.Value

答案 1 :(得分:1)

SELECT * FROM Table1
JOIN Table2
ON table1.ThresholdID = table2.ThresholdID --(assuming table 2 holds the same value to link them together)
WHERE
value < thresholdvalue

'JOIN'根据'ON'子句连接2个表(可以是多部分,使用'AND'和'OR')

如果表2中有3个条目共享table1的主键(一对多关联),您将在结果集中收到3行。

对于下表,例如:

Table 1:
Key     Value
1       Hi
2       Bye

Table 2:
Table1Key  2nd_word
1           You
1           fellow
1           friend
2           now

此查询:

SELECT * FROM Table1 加入表2 在table1.key = table2.table1key

得到这个结果集:

Key    Value    Table1Key   2nd_word
1      Hi        1          You
1      Hi        1          fellow
1      Hi        1          friend
2      Bye       2          now

请注意,JOIN仅在第二个表中存在匹配时返回结果,如果没有匹配则不返回结果。你可以LEFT JOIN(第二个表中的所有字段都是NULL)。

JOIN也可以串在一起,前一个JOIN的结果用来代替原始表。

答案 2 :(得分:1)

SELECT t1.*
FROM dbo.Table1 t1 INNER JOIN dbo.Table2 t2 ON t1.ThresholdID = t2.ThresholdID
WHERE t2.Threshold > t1.Value

答案 3 :(得分:1)

SELECT * from table1 t1 join table2 t2 on(t1.thresholdId = t2.thresholdId) 其中t1.value&lt; t2.threshold;

答案 4 :(得分:1)

SELECT t1.LogEntryID, t1.Value, t1.ThresholdID
FROM Table1 t1 
INNER JOIN Table2 t2 ON t1.ThresholdID = t2.ThresholdID 
WHERE t1.Value < t2.threshold