我正在从players
表中选择所有内容,然后我想检查播放器id
或播放器name
是否已设置在具有条件的其他表中。
我有两张桌子 - players
和shop
。
shop
包含以下列:uid
,dateline
,from
,done
。
正如我所说,我正在从players
表中选择所有内容,现在我想在名为was_shopping
的结果中添加其他列,并在{{1}时将1
添加} {。{1}}或players
。id
位于players
的某个位置,其中name
。shop
高于我给出的变量。< / p>
为了确保你理解正确,它应该是这样的(它不是一个查询,它只是一个关于如何在查询中起作用的例子):
shop
如果dateline
。SELECT *
FROM players
WHERE (players.id OR players.name)
IN (
SELECT `uid` AND `from`
FROM `shop`
WHERE `dateline` >= xxxxx
)
或players
。id
将在players
内。name
或shop
。uid
与shop
一起,它应该在结果中添加另一列:from
- dateline >= xxxxx
或was_shopping
(如果在1
表中找到则如果没有找到,则为1和0。
如果您不理解某个词,请发表评论。
答案 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