使用其他表中的条件添加结果列

时间:2012-05-18 21:39:40

标签: mysql select

我正在从players表中选择所有内容,然后我想检查播放器id或播放器name是否已设置在具有条件的其他表中。

我有两张桌子 - playersshop

shop包含以下列:uiddatelinefromdone

正如我所说,我正在从players表中选择所有内容,现在我想在名为was_shopping的结果中添加其他列,并在{{1}时将1添加} {。{1}}或playersid位于players的某个位置,其中nameshop高于我给出的变量。< / p>

为了确保你理解正确,它应该是这样的(它不是一个查询,它只是一个关于如何在查询中起作用的例子):

shop

如果datelineSELECT * FROM players WHERE (players.id OR players.name) IN ( SELECT `uid` AND `from` FROM `shop` WHERE `dateline` >= xxxxx ) playersid将在players内。nameshopuidshop一起,它应该在结果中添加另一列:from - dateline >= xxxxxwas_shopping(如果在1表中找到则如果没有找到,则为1和0。

如果您不理解某个词,请发表评论。

2 个答案:

答案 0 :(得分:0)

Select p.*, case when s.uid is null then 0 else 1 end as was_shopping
From players as p
left join shop as s
where s.uid = p.id and s.dateline > = xxxxx

答案 1 :(得分:0)

根据您的描述,我相信这会返回正确的结果。注意我使用值10作为日期行选择:

select p.*, case when s.uid is null then 0 else case when dateline>10 then 1 else 0 end end as was_shopping 
from players p
left join shops s
on p.id = s.uid or p.name like concat('%',`from`,'%')
where s.uid is not null