MySQL:获取表数据,但如果id匹配则加入另一个表

时间:2013-09-19 01:36:36

标签: mysql database laravel laravel-4

我的桌子

pets
pet_lost

给我所有pets where user_id = 1 ...但如果pet_lost

还包含pet_lost.pet_id = pets.id数据

我总是希望引入pets where user_id = 1,但如果有连接,我想访问pet_lost数据...

有意义吗?

2 个答案:

答案 0 :(得分:0)

您可以使用left outer join和相应的where条款将其转换为查询:

select *
from pets p left outer join
     pet_lost pl
     on pl.pet_id = p.id
where p.user_id = 1 or pl.pet_id is not null;

编辑:

您可以将其命名为:

select p.*
from pets p
where p.user_id = 1 or
      p.id in (select pl.pet_id from pet_lost);

答案 1 :(得分:0)

我不确定为什么你有2张桌子,但从我看到的情况来看,我会在宠物栏中放置一个二进制字段,以便对宠物状态表示是或否。

但是如果你要保持你的牌桌,那么你会使用" Union"查询将2个表放在一起。

请记住,宠物桌上不能丢失宠物身份。

我会推荐宠物表中的二进制字段并删除宠物遗失表。