【发布时间】:2020-08-23 06:41:05
【问题描述】:
我有表films 与列id | array_of_img
array_of_img 列包含 JSON 数组,例如 ["1","2","3"]
我还有一个会话变量数组$session_var = [1,2],在json_encode 之后变成["1","2"]。
所以我的目标是获得单个随机整数值,它不在$session_var 中,而是在array_of_img 列中的films 行之一中。
在上面的例子中,结果必须是3。
可能的逻辑:
- 合并两个 json 并删除重复项
- 以某种方式获得比较两个 json 的 UNIQUE 元素
我浏览了这些功能,但不明白如何在我的情况下使用它们:
- JSON_CONTAINS
- JSON_OVERLAPS(MySQL 版本> 5.7)
- JSON_KEYS
- JSON_MERGE_PRESERVE
- JSON_MERGE_PATCH
查看语法的一些代码
$session_var = json_encode($session_var);
$query = "SELECT * FROM films WHERE ORDER BY RAND() LIMIT 1";
非常感谢您的帮助!
【问题讨论】:
-
如果没有 MySQL 8+,这在 PHP 中可能更容易做到。
-
@Nick 非常感谢。我想我已经做到了你的意思。
-
很抱歉,我不能提供更多帮助。如果您确实升级到 MySQL 8,您可以在两个 JSON 值上使用
JSON_TABLE,并使用反连接来获取两者都不存在的值。