mysql - SQL JOIN,其中 tab1.colA 值在 tab2.colB 的 JSON 列表中
问题描述
我有几张桌子:products
, transactions
, styles
. SQL 查询连接products
到styles
一张表,其中包含我在技术上需要的所有信息。但是,我需要按购买时间对这些信息进行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
存在于productIDs
JSON 结构中。
我如何执行这样的加入?
解决方案
尝试在 where 子句中添加类似的内容
AND exists(select value from openjson(productids) p where p.value in (select productid from products))
推荐阅读
- android - 升级 okhttp 后出现 BootstrapMethodError
- react-native - Hash Tag '#' 未显示在拨号盘 react-native(电话号码)中
- android - Android - 如何允许点击 alertdialog 后面的项目?
- java - 如何处理不带或不带查询参数的请求
- mysql - 您可以使用 TEXT 数据类型创建表字段吗
- c++ - Phong-Alpha 材质透明度
- docker - 使用目录外的环境文件在构建期间使用 docker-compose 提供参数
- php - Yii2 - gridview 自定义操作按钮的 403 错误
- django - 是否可以使用基于类的通用 ListView 在单个模板中同时过滤和排序?如果是,如何?
- database - 一个领域,两个目的