我想要完成的是从一个表中选择不同的值,并包含另一个表中的字段值(将从另一个表中选择)。
这是我的声明的示例:
SELECT table1.Foo, <- ID
table1.Bar, <- some value
(SELECT table2.Baz from table2 <- another value I'd like to select from another table
WHERE table1.Foo = table2.Foo and table2.Qux = 'A') As value1
FROM table1
INNER JOIN table2 ON table1.Foo = table2.Foo
WHERE table1.Bar = '2'
value1 是一个独特的值,这一点非常重要。抛出的错误是子查询(value1)包含多个值。
恳请您的帮助!
编辑:这是一些示例数据
表1
|---------------------|------------------|
| Foo | Bar |
|---------------------|------------------|
| 1 | ABC |
|---------------------|------------------|
| 2 | XYZ |
|---------------------|------------------|
表2
|---------------------|------------------|------------------|
| Foo | Baz | Qux |
|---------------------|------------------|------------------|
| 1 | 100 | A |
|---------------------|------------------|------------------|
| 1 | 200 | B |
|---------------------|------------------|------------------|
| 2 | 150 | A |
|---------------------|------------------|------------------|
| 2 | 175 | B |
|---------------------|------------------|------------------|
结果<-这就是我想要实现的目标
|---------------------|------------------|------------------|
| Foo | Bar | value1 |
|---------------------|------------------|------------------|
| 1 | ABC | 100 |
|---------------------|------------------|------------------|
| 2 | XYZ | 150 |
|---------------------|------------------|------------------|
您好, 框架
最佳答案
如果您使用子查询
,则无需再次执行JOIN
:
select *,
(select top 1 Baz from table2 where Foo = t1.Foo and Qux = 'A') as value1
from table1 t1;
如果不支持,请使用LIMIT
子句代替TOP
。
您可以将 LIMIT
子句实现为
select *,
(select Baz
from table2
where Foo = t1.Foo and
Qux = 'A'
order by Baz -- Use DESC if necessary
LIMIT 1) as value1
from table1 t1;
关于SQL:选择表并包含另一个表中的字段/值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50229837/