【发布时间】:2021-08-30 23:27:29
【问题描述】:
我有下表
| ID | Name | Currencies | Aliases |
|---|---|---|---|
| 1 | User | ["USD","EURO"] | {"User2":["3"]} |
我想编写基于货币和别名返回以下结果的 SQL,以显示具有用户别名的用户和具有相同货币的用户
| NAME | Currencies | Aliases |
|---|---|---|
| User | 1 | NULL |
| User2 | NULL | 1 |
我的初始 SQL 如下
SELECT NAME
FROM table
WHERE JSON_CONTAINS(Currencies,'"EURO"',"$")
OR JSON_CONTAINS(Aliases,'"3"',"$");
上面代码的问题是我无法区分这些用户是否共享相同的别名或相同的货币,它并不需要与上面表格的格式相同才能区分是可以的
顺便说一句,我正在使用 MySQL(10.5.10-MariaDB-1:10.5.10+maria~bionic)
样本:
CREATE TABLE IF NOT EXISTS table(
ID INT,
NAME VARCHAR(255),
Currencies LONGTEXT,
Aliases LONGTEXT,
PRIMARY KEY(ID)
);
插入数据:
REPLACE INTO table(ID, NAME, Currencies, Aliases) VALUES (:id, :name, :currencies, :aliases);
【问题讨论】:
-
您使用的是哪个 dbms?
-
我正在使用 MySQL (mariadb)
-
感谢提供示例数据,但不清楚输入如何映射到输出。
-
以 CREATE TABLE + INSERT INTO 脚本的形式提供示例数据(当前表示没有用)。样本数据必须包括所有可能的关系变化。严格提供此数据所需的输出,并附上解释。指定精确的 MySQL 版本。