2017-11-22 12 views
0

と最後のキーを選択します。MySQLは、私は次のようにJSONを持っている価値JSON

3x12 

3:

{"1": "6", "2": "10", "3": "12"} 

と私は似た出力を得るためにMySQLのクエリを使用して最後のキーと値を取得したいと思います最後のキー、12は最後のキー値です...

これを行うためのMySQLクエリはありますか?私は上記のように値を提出し、whileループとキーが最後にその値とキーを印刷するように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; 

答えて

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を参照してください。

+0

ありがとう...本当にうまくいきます。 – John

関連する問題