我有两张桌子(Apple和Bid)。我想根据给定条件返回A中的所有行,并且我想从表B中获取单个值。如果我展示我正在尝试做的事情,这将有所帮助:
Apple
ID
Name
Type
Bid
bid_id
Type
我想返回来自A的所有记录,其中ID与给定ID匹配,并且我希望将bid_id与从表A中提取的每条记录相关联。
所以,我的查询看起来像这样:
"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";
Apple
表中只有一条id为35的记录。但是,由于Bid
表中有三个类型与Apple#35类型相匹配,因此有三个记录是被退回。
澄清一下,只应返回一个记录。
有什么想法吗?
答案 0 :(得分: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;
答案 1 :(得分: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,也可以实现更复杂的规则。
答案 2 :(得分: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