0
的陣列我有以下表,其名爲products
我省略了,我不會需要列:過濾行存儲對象
+---------------------+----------------+------+-----+---------+----------------+
| Field | Type | Null | Key | Default | Extra |
+---------------------+----------------+------+-----+---------+----------------+
| id | int(11) | NO | PRI | NULL | auto_increment |
| name | varchar(255) | NO | | NULL | |
| custom_fields | json | YES | | NULL | |
| parent_variation_id | int(11) | YES | MUL | NULL | |
| variation_fields | json | YES | | NULL | |
+---------------------+----------------+------+-----+---------+----------------+
我有我想用兩個JSON列相同的查詢來過濾產品及其變體。兩列具有相同的結構是這樣的存儲自定義字段一個產品可能有:
[
{"name": "External use", "type": "checkbox", "value":"true"},
{"name": "Handmade", "type": "checkbox", "value":"true"},
....
]
的查詢過濾器的重要屬性是name
和value
這是字段的名稱和相關聯的值在上面的例子中,我們有一個手工製作的產品,可以在外部使用。
如果用戶想要過濾的產品,他也許會把PARAMS像{"External use": "false", "Handmade":"true"}
但現在我只能在一個屬性篩選,目前value
所以如果我通過true
它會帶來有value
設置爲true在任何領域的所有產品。
SELECT *
FROM `products`
WHERE json_search(custom_fields, 'all', 'true', NULL, '$[*].value') IS NOT NULL
我想知道,如果它可以施加AND
條件什麼的都爲這些對象數組中的一樣JSON對象,所以我通過參數是關係到我需要的領域。
你是什麼意思的「生成列」?一個正常的SQL列?我有這些和我使用它們,我省略了查詢和表格的90%,以專注於我目前遇到的問題。有時用戶會嘗試過濾兩個自定義列,目前我正在過濾應用程序層,但如果我想使用OFFSET和LIMIT來分頁數據庫,我無法做到這一點。 – Murilo
生成的或虛擬的列有許多用途,但其中一個用於獲取部分JSON數據並將該部分放入其自己的列中。新列可以是快速搜索的索引。示例請參閱http://mysqlserverteam.com/indexing-json-documents-via-virtual-columns/ –