首页 > 解决方案 > SQL JOIN,其中 tab1.colA 值在 tab2.colB 的 JSON 列表中

问题描述

我有几张桌子:products, transactions, styles. SQL 查询连接productsstyles一张表,其中包含我在技术上需要的所有信息。但是,我需要按购买时间对这些信息进行timestamp排序product。出于这个原因,我需要加入transactions先前加入的输出:

交易

| id | timestamp           | productIDs     |
|----|---------------------|----------------|
| 0  | 2014-08-04 07:56:54 | ["ID1", "ID2"] |
| 1  | 2014-08-04 07:56:57 | ["ID3", "ID4"] |

产品+款式加入

| productID | styleID | ... |
|-----------|---------|-----|
| ID1       | aaa     | ... |
| ID2       | bbb     | ... |
| ID3       | ccc     | ... |
| ID4       | ddd     | ... |

我在找什么:

| productID | styleID | timestamp           | ... |
|-----------|---------|---------------------|-----|
| ID1       | aaa     | 2014-08-04 07:56:54 | ... |
| ID2       | bbb     | 2014-08-04 07:56:54 | ... |
| ID3       | ccc     | 2014-08-04 07:56:57 | ... |
| ID4       | ddd     | 2014-08-04 07:56:57 | ... |

对于来自 的每一行,从products + styles中添加一个时间戳transactions,其中productID存在于productIDsJSON 结构中。

我如何执行这样的加入?

标签: mysqlsql

解决方案


尝试在 where 子句中添加类似的内容

AND exists(select value from openjson(productids) p where p.value in (select productid from products))

推荐阅读