MySQLのリファレンスを読む 1章の続き その⑨
まいえすきゅーえりたい ぽすぐれない おらくるってる(狂ってる)tomoです。
やるぞやるぞ詐欺を経て、ようやく戻ってまいりました!
あぁMySQL、寂しかったよMySQL。
ちょっと登壇したり、社内のごにょごにょしたり、Oraくるってました。
speakerdeck.com
もうMySQLばっかりで、ええんやで←
今日もこれの続き。
tomomo1015.hatenablog.com
今日読んだもの
1.3 MySQL 8.0 の新機能
ここの「SQL 標準の明示的なテーブル句およびテーブル値コンストラクタ」から。
--- 以下2つは同じSQL文 SELECT a FROM t1 WHERE b > ANY (TABLE t2) ; SELECT a FROM t1 WHERE b > ANY (SELECT * FROM t2) ;
--- (i_a, i_b, i_c) にはインデックスマージが使用されるパターン SELECT /*+ INDEX_MERGE(t1 i_a, i_b, i_c)*/ * FROM t1 WHERE b = 1 AND c = 2 AND d = 3;
- JSON_VALUE() 関数が増えたよ。これはJSON カラムのインデックス付けを簡略化するためのもの…ほうほう?
- これ、マニュアルに書いてあるSQLをそのまま流してみたんだけど…あれ?8.1だから??
- このあたり正直不慣れすぎるので、ちょうどいいつまり方したかも。
mysql> SELECT version(); +-----------+ | version() | +-----------+ | 8.1.0 | +-----------+ 1 row in set (0.00 sec) mysql> mysql> CREATE TABLE t1( -> j JSON, -> INDEX i1 ( (JSON_VALUE(j, '$.id' RETURNING UNSIGNED)) ) -> ); Query OK, 0 rows affected (0.03 sec) mysql> INSERT INTO t1 VALUES ROW('{"id": "123", "name": "shoes", "price": "49.95"}'); Query OK, 1 row affected (0.01 sec) mysql> SELECT name, price FROM t1 -> WHERE JSON_VALUE(j, '$.id' RETURNING UNSIGNED) = 123; ERROR 1054 (42S22): Unknown column 'name' in 'field list' mysql> select * from t1; +--------------------------------------------------+ | j | +--------------------------------------------------+ | {"id": "123", "name": "shoes", "price": "49.95"} | +--------------------------------------------------+ 1 row in set (0.00 sec) mysql>
という、ここで詰まって今日はタイムアウト。明日このエラーの原因調べようと思います…!