You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在SurrealDB中不使用记录链接实现表连接?

SurrealDB 基于任意列实现表连接的解决方案

问题描述

SurrealDB文档指出,JOIN的概念被记录链接(Record links)替代,但仍能否基于任意列实现表连接?

现有如下表结构:

CREATE user:1 SET
    name = 'User1',
    favouriteDay = 'Monday'
;
CREATE user:2 SET
    name = 'User2',
    favouriteDay = 'Tuesday'
;

CREATE motto:1 SET 
    day = 'Monday',
    motto = 'Best day of the week'
;
CREATE motto:2 SET
    day = 'Tuesday',
    motto = 'Second best day of the week'
;

能否在不修改底层数据模型的前提下编写查询,得到如下结果?

"result": [
  {
    "favouriteDay": "Monday",
    "id": "user:1",
    "name": "User1",
    "motto": "Best day of the week"
  },
  {
    "favouriteDay": "Tuesday",
    "id": "user:2",
    "name": "User2",
    "motto": "Second best day of the week"
  }
]

解决方案

可以实现。SurrealDB虽然主推记录链接,但依然支持基于任意列的关联查询,无需修改现有数据模型。以下两种写法均可满足需求:

方法一:子查询关联

SELECT 
    user.*, 
    (SELECT motto FROM motto WHERE motto.day = user.favouriteDay) AS motto
FROM user;

通过子查询匹配user表的favouriteDay与motto表的day字段,将对应格言作为字段返回。

方法二:多表关联查询

SELECT
    u.id,
    u.name,
    u.favouriteDay,
    m.motto
FROM user u, motto m
WHERE u.favouriteDay = m.day;

直接在FROM子句中关联两张表,通过WHERE条件匹配列值,筛选出对应的数据并返回指定字段。

两种写法都能精准输出你需要的结果集,无需调整原有数据结构。

内容的提问来源于stack exchange,提问作者Tobias S.

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.18 02:01:00