我有五个结果要从表中检索,我想写一个将返回所有所需行的存储过程。
我可以暂时写下这样的查询:
Select * from Table where Id = 1 OR Id = 2 or Id = 3
我想我需要收到要分割的Id
列表,但是如何编写WHERE
条款?
答案 0 :(得分:6)
因此,如果您只是尝试学习SQL,这是了解IN
运算符的简短示例。以下查询与您的尝试结果相同。
SELECT *
FROM TABLE
WHERE ID IN (SELECT ID FROM TALBE2)
这转化为您的尝试。根据您的尝试判断,这可能是您理解的最简单的版本。虽然我将来会推荐使用JOIN
。
JOIN
具有与上一代码相同的功能,但将是更好的选择。如果您想了解更多有关JOINs
的信息,可以参考以下最重要来源的链接
答案 1 :(得分:4)
另一种方法。 inner join
仅包含T1中的行,这些行与来自T2的行通过Id
字段匹配。
select T1.* from T1 inner join T2 on T1.Id = T2.Id
在实践中,inner joins are usually preferable to subqueries出于性能原因。