我想要完成的是从一个表中选择不同的值,并在另一个表中包含一个字段值(可以从另一个表中选择)。
以下是我的陈述的一个例子:
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 |
|---------------------|------------------|------------------|
结果&lt; - 这就是我想要实现的目标
|---------------------|------------------|------------------|
| Foo | Bar | value1 |
|---------------------|------------------|------------------|
| 1 | ABC | 100 |
|---------------------|------------------|------------------|
| 2 | XYZ | 150 |
|---------------------|------------------|------------------|
问候, 帧
答案 0 :(得分:1)
如果您使用JOIN
:
subquery
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;
答案 1 :(得分:0)
尝试此查询:
SELECT
t1.Foo,
t1.Bar,
t2.Baz AS value1
FROM table1 t1
INNER JOIN table2 t2
ON t1.Foo = t2.Foo
WHERE
t2.Qux = 'A';
答案 2 :(得分:0)
您可以使用SELECT DISTINCT语句
SELECT DISTINCT table1.Foo,
table1.Bar,
(SELECT table2.Baz from table2
WHERE table1.Foo = table2.Foo and table2.Qux = 'A') As value1
FROM table1
INNER JOIN table2
WHERE table1.Foo = table2.Foo AND table1.Bar = '2'