我有JSON之类的:
{"1": "6", "2": "10", "3": "12"}
我希望使用MySQL查询得到最后的密钥和值,以获得如下输出:
3x12
3是最后一个键,12是最后一个键值...
有没有MySQL查询呢?我知道使用读取上面发布的整个MySQL字段值然后循环,如果键是最后打印它的值和键...但是如果可以在MySQL查询中获得此输出?
我正在使用这个读取MySQL字段值并获取最后一个键和值的php ...但我不知道如何在mysql中执行此操作:
$json = json_decode('{"1": "6", "2": "10", "3": "12"}', true);
$value = end($json);
$key = key($json);
echo 'KEY: '.$key.'...VALUE: '.$value;
答案 0 :(得分:1)
您可以尝试以下内容,根据需要进行调整:
mysql> SELECT VERSION();
+-----------+
| VERSION() |
+-----------+
| 5.7.20 |
+-----------+
1 row in set (0.00 sec)
mysql> SET @`json` := '
'> {
'> "1": "6",
'> "2": "10",
'> "3": "12"
'> }
'> ';
Query OK, 0 rows affected (0.00 sec)
mysql> SELECT
-> CONCAT(
-> JSON_UNQUOTE(@`key`),
-> 'x',
-> JSON_UNQUOTE(
-> JSON_EXTRACT(@`json`,
-> CONCAT('$.', @`key`)
-> )
-> )
-> ) `value`
-> FROM (
-> SELECT @`key` := JSON_EXTRACT(
-> JSON_KEYS(@`json`),
-> CONCAT('$[', JSON_LENGTH(@`json`) - 1, ']')
-> )
-> ) `init`;
+-------+
| value |
+-------+
| 3x12 |
+-------+
1 row in set (0.00 sec)
请参阅db-fiddle。