0

我有两张桌子(Apple 和 Bid)。我想根据给定条件从 A 返回所有行,并且我想从表 B 中获取单个值。如果我展示我正在尝试做的事情,这将有所帮助:

Apple
ID
Name
Type

Bid
bid_id
Type

我想从 A 返回 ID 与给定 ID 匹配的所有记录,并且我想获取与从表 A 中提取的每条记录相关联的 bid_id。

所以,我的查询看起来像这样:

"Select A.ID, A.Name, A.Type, B.bid_id
FROM Apple A
LEFT JOIN Bid B on B.Type = A.Type
Where A.ID = 35";

表中只有一条 id 为 35 的记录Apple。但是,由于该表中有 3 个表Bid的类型与 Apple#35 的类型匹配,因此返回了 3 条记录。

为了澄清,应该只返回一个记录。

有任何想法吗?

4

3 回答 3

1

任意选择返回 MIN 值:

Select A.ID, A.Name, A.Type, MIN(B.bid_id)
    FROM Apple A
        LEFT JOIN Bid B 
            ON B.Type = A.Type
    WHERE A.ID = 35
    GROUP BY A.ID, A.Name, A.Type;
于 2012-04-12T21:06:05.487 回答
1

对于 MySQL:

Select A.ID, A.Name, A.Type, B.bid_id
FROM Apple A
LEFT JOIN Bid B
  ON B.Type = A.Type
WHERE A.ID = 35
GROUP BY A.ID

这将返回其中一个bid_id。如果您有一些bid_id关于选择的规则,您可以使用聚合函数来实现它 - 例如,MIN、MAX 以及更复杂的规则也可以实现。

于 2012-04-12T21:06:10.043 回答
0

鉴于您正在寻找最多一个随机出价,最快的选择是limit 1

select  A.ID
,       A.Name
,       A.Type
,       B.bid_id
from    Apple A
left join
        Bid B 
on      B.Type = A.Type
where   A.ID = 35
limit   1
于 2012-04-12T21:10:06.537 回答