我的设置如下:
Table 'data': 'title','body',...,'user_id',...
Table 'users': 'user_id','some_val'...
基本上我想以某种方式在 user_id 字段上连接表“data”和“users”,以便我可以从“users”表中提取“some_val”。我的问题是,并非“数据”表中的每个 user_id 在“用户”表中都有相应的条目。
使用 codeigniter/php,我最终想组装一个结果数组,其中包含来自“users”表的所有“some_vals”连接 data.user_id = users.user_id
。但是当数据表中存在 user_id 而不是用户表中时,我想将一些默认值插入到我的结果数组中(希望这个数组可以与数据表中的 user_id 的顺序相同)。
希望这不是太不清楚。有什么想法吗?
最佳答案
您要做的是所谓的 left join
.本质上,这会获取所有行的 data
并匹配 users
表。除非,如果 data
没有匹配的 user_id
,它只会为这些列加载 null
。为了处理那些 null
,您可以使用 coalesce
函数,它将 null
替换为某个值(如果它是数字,则可以是 1234,但出于演示目的,我只是选择了 'DefaultVal'
)。
总之,一切都是这样的:
select
coalesce(u.some_val, 'DefaultVal') as some_val
from
data d
left join users u on
d.user_id = u.user_id
关于php codeigniter 组装查询结果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1186208/