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

如何自连接form_submission_values表查询Stripe支付相关记录?

实现思路与SQL示例

当然可以通过自连接来完成这个需求!这其实是处理这类**实体-属性-值(EAV)**结构表时非常常见的操作场景,完全适配你的查询需求。

自连接版本的SQL语句

SELECT sv_all.*
FROM form_submission_values sv_all
JOIN form_submission_values sv_stripe
  ON sv_all.SubmissionId = sv_stripe.SubmissionId
WHERE sv_stripe.FieldName = 'payment'
  AND sv_stripe.FieldValue = 'stripe';

代码逻辑解释

  • 我们给同一张表起了两个别名:sv_stripe专门用来筛选出所有使用Stripe支付的提交ID,sv_all则用来获取这些ID对应的所有名称/值对。
  • 自连接的核心条件是两张表的SubmissionId相等,这样就能精准关联到符合支付方式要求的提交的所有关联数据。
  • 如果你的表存在重复的键值对记录,想要去重的话,可以在SELECT后加上DISTINCT:SELECT DISTINCT sv_all.*。

替代方案:子查询

要是你觉得自连接的写法不够直观,也可以用子查询实现,效果完全一致:

SELECT *
FROM form_submission_values
WHERE SubmissionId IN (
    SELECT SubmissionId
    FROM form_submission_values
    WHERE FieldName = 'payment'
      AND FieldValue = 'stripe'
);

两种方案的性能差异主要取决于你的表数据量和索引配置,建议给SubmissionId、FieldName和FieldValue字段建立合适的联合索引,能大幅提升查询效率。

内容的提问来源于stack exchange,提问作者Simon Logan

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.19 10:26:33