2

我有五个要从表中检索的结果,我想编写一个将返回所有所需行的存储过程。

我可以暂时这样写查询:

Select * from Table where Id = 1 OR Id = 2 or Id = 3

我想我需要收到一个Id要拆分的 s 列表,但是我该如何编写WHERE子句?

4

2 回答 2

6

因此,如果您只是想学习 SQL,这是一个了解IN运算符的简短而好的示例。以下查询与您的尝试具有相同的结果。

SELECT * 
FROM TABLE 
WHERE ID IN (SELECT ID FROM TALBE2)

这转化为您的尝试。从您的尝试来看,这可能是您理解的最简单的版本。虽然,将来我会推荐使用JOIN.

AJOIN与前面的代码具有相同的功能,但将是一个更好的选择。如果您想了解更多信息JOINs,这里有一些来自最重要来源的链接

于 2013-05-29T19:59:41.640 回答
4

另一种方法。将仅包括 T1 中通过该字段inner join与 T2 中的行匹配的行。Id

select T1.* from T1 inner join T2 on T1.Id = T2.Id

实际上,出于性能原因,内部连接通常比子查询更可取。

于 2013-05-29T20:01:55.787 回答