我想创建一个SQL语句,根据另一个表中的值从一个表中选择值。 我想知道如何在SQL中这样做,但在PostgreSQL中了解也会很好。
EX:
TableA
ID | Label | Value
1 Test A
TableB
ID | Name | Label
1 TestN Test
我认为查询看起来像这样:
SELECT Name FROM TableB WHERE Label = SELECT Label FROM TableA WHERE Value = 'A';
那个人会抛出错误。想法?
答案 0 :(得分:6)
你很接近......试试这个:
SELECT Name FROM TableB WHERE Label IN ( SELECT Label FROM TableA WHERE Value = 'A' );
编辑:开始添加INNER JOIN选项,但它在下面的另一个答案中列出。
答案 1 :(得分:3)
使用IN不等于:
select Name
from TableB
where Label in ( SELECT Label FROM TableA WHERE Value = 'A' );
答案 2 :(得分:2)
你为什么不进行INNER JOIN?
SELECT DISTINCT B.Name
FROM TableB B
INNER JOIN TableA A ON B.Label = A.Label
WHERE A.Value = 'A'
答案 3 :(得分:1)
我不是生产代码中“IN”子句的忠实粉丝。其他人会不同意,我明白了。
存在且不存在....
SELECT Name FROM TableB tabB WHERE
exists ( select null from TableA innerAAlias WHERE innerAAlias.Value = 'A' /* filter */ and innerAAlias.Label = tabB.Label /* relationship to the outside query */);
答案 4 :(得分:1)
使用TSQL - > EXISTS ...
SELECT b.name
FROM Table B AS b
WHERE EXISTS
(SELECT *
FROM TableA a
WHERE b.label = a.label
AND a.value = 'A');