[英]MySQL Retrieving data from two tables using inner join syntax
我的两个桌子是
Entry
event_id competitor_id place
101 101 1
101 102 2
101 201 3
101 301 4
102 201 2
103 201 3
第二张表列出了该活动的奖品
Prize
event_id place money
101 1 120
101 2 60
101 3 30
102 1 10
102 2 5
102 3 2
103 1 100
103 2 60
103 3 40
由此,我希望显示入围表中的所有信息以及他们为自己应得的地位赢得的奖金。 如果他们不能放入钱中,那么将显示0。
任何帮助,将不胜感激。
尝试这个:
SELECT a.Event_ID,
a.Competitor_ID,
a.Place,
COALESCE(b.money, 0) as `Money`
FROM entry a left join prize b
on (a.event_id = b.event_ID) AND
(a.place = b.Place)
希望这可以帮助。
EVENT_ID COMPETITOR_ID PLACE MONEY
101 101 1 120
101 102 2 60
101 201 3 30
101 301 4 0 -- << this is what you're looking for
102 201 2 5
103 201 3 40
SELECT * FROM Entry NATURAL LEFT JOIN Prize;
如果在没有赢得任何奖金的情况下,如果您绝对希望“金钱”为0
而不是NULL
(但是如何区分0的奖金和没有的奖金?):
SELECT Entry.*, COALESCE(money, 0) AS money FROM Entry NATURAL LEFT JOIN Prize;
在sqlfiddle上都可以看到它们。
尝试这个:
select e.*, coalesce(p.money, 0) money from entry e
left join prize p
on e.event_id = p.event_id and e.place = p.place
你可以在这里玩小提琴。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.