如何在SQL中从两个不同的表中选择值

11

我在SQL Server数据库中有两个表。第一个是 Test1,第二个是 Test2。这两个表中都有一个名为RegNo的列。

现在,我想选择特定RegNo的两个表中的值。

这是我正在做的事情:

SELECT Test1.SurName, Test2.Class, Test2.Medium
FROM Test1,Test2 JOINS
Test2 ON Test1.RegNo = Test2.RegNo

但是我的查询出现了错误。

7个回答

10
select
    Test1.SurName,
    Test2.Class,
    Test2.Medium
from Test1
inner join Test2
on Test1.RegNo = Test2.RegNo

如果你想为特定的 RegNo 选择数据,只需要在结尾处添加一个 WHERE 子句,就像这样:

select
    Test1.SurName,
    Test2.Class,
    Test2.Medium
from Test1
inner join Test2
on Test1.RegNo = Test2.RegNo
where Test1.RegNo = 123456   -- or whatever value/datatype your RegNo is

@Marco :) 谢谢!看起来只是几秒钟的事情。 ;) - user596075

10
SELECT Test1.SurName, Test2.Class, Test2.Medium
FROM Test1 
INNER JOIN Test2 ON Test1.RegNo = Test2.RegNo

因为RegNo在两个表中都存在,所以您也可以使用USINGSELECT Test1.SurName, Test2.Class, Test2.Medium FROM Test1 INNER JOIN Test2 USING(RegNo) - Ron van der Heijden
1
@Bondye 是的,你可以这样做 - 但你不应该这样做:你最终会得到相同的执行计划,但是使用 SQL 片段,这并不易于移植。我的经验法则是:如果平台特定的功能带来了性能或功能方面的提升:请使用它。如果它只是重新表述了一个可移植的结构:不要使用它。 - Eugen Rieck

3
SELECT Test1.SurName, Test2.Class, Test2.Medium
FROM Test1
INNER JOIN Test2
ON Test1.RegNo = Test2.RegNo

请查看SQL连接的可视化解释,这对学习连接非常有帮助。

1

试试这个:

SELECT Test1.SurName, Test2.Class, Test2.Medium
FROM Test1 INNER JOIN Test2
ON Test1.RegNo = Test2.RegNo
WHERE Test1.RegNo = desired_id

1

这是一个非常基础的问题,请下次尝试使用谷歌,现在我来回答:

SELECT Test1.SurName, Test2.Class, Test2.Medium
FROM Test1
inner join Test2 ON Test1.RegNo = Test2.RegNo

1

这是您带有更正的查询。

SELECT Test1.SurName, Test2.Class, Test2.Medium
    FROM Test1 INNER JOIN Test2 ON Test1.RegNo = Test2.RegNo where  Test2.RegNo=Test1.RegNo;

同时,您可以通过提供RegNo来过滤查询,无论您想在哪个表中进行。


1
如果您想找到没有使用 join 和 relation 的方法,这个代码可以实现。
select 
   (
   select s.state_name from state s where s.state_id=3
   ) statename,
   (
   select c.description from country c where c.id=5
   ) countryname
   from dual;   

其中dual是一个虚拟表,只有一列--任何东西都可以,只需要表格来查看。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接