色婷婷狠狠18禁久久YY,CHINESE性内射高清国产,国产女人18毛片水真多1,国产AV在线观看

mysql中如何in查詢json數(shù)組

在mysql中,我們可以使用IN語(yǔ)句對(duì)多個(gè)value進(jìn)行查詢。而當(dāng)我們需要對(duì)json數(shù)組進(jìn)行IN查詢時(shí)該怎么辦呢?下面就讓我們通過(guò)代碼實(shí)現(xiàn)來(lái)探討一下。

CREATE TABLE `student` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`name` varchar(50) DEFAULT NULL,
`class` json DEFAULT NULL,
PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=4 DEFAULT CHARSET=utf8mb4;
INSERT INTO `student` (`id`, `name`, `class`) VALUES
(1, '小明', '[{"name": "數(shù)學(xué)", "score": 79}, {"name": "英語(yǔ)", "score": 85}, {"name": "物理", "score": 92}]'),
(2, '小紅', '[{"name": "數(shù)學(xué)", "score": 89}, {"name": "英語(yǔ)", "score": 78}, {"name": "物理", "score": 95}]'),
(3, '小黃', '[{"name": "數(shù)學(xué)", "score": 96}, {"name": "英語(yǔ)", "score": 87}, {"name": "物理", "score": 84}]');

首先我們創(chuàng)建一個(gè)學(xué)生表student,其中class字段為json數(shù)組。我們可以通過(guò)以下代碼來(lái)查詢其中分?jǐn)?shù)在90分以上的學(xué)生:

SELECT * FROM student WHERE JSON_CONTAINS(class, '{"score":90}', '$.name')=1;

這里我們使用了JSON_CONTAINS函數(shù),該函數(shù)用于判斷json數(shù)組中是否存在某個(gè)元素。第一個(gè)參數(shù)為需要查詢的字段,第二個(gè)參數(shù)為查詢條件,第三個(gè)參數(shù)為查詢路徑。在這里,我們查詢字段class中是否包含score為90的元素。注意這里的查詢條件和查詢路徑都需要使用json格式字符串。

如果我們需要查詢多個(gè)分?jǐn)?shù)的學(xué)生,可以通過(guò)IN語(yǔ)句實(shí)現(xiàn):

SELECT * FROM student WHERE JSON_CONTAINS(class, '{"score":90}', '$.name') OR JSON_CONTAINS(class, '{"score":95}', '$.name');

這里我們使用了OR語(yǔ)句將兩個(gè)查詢條件連接在一起。如果需要查詢更多的元素,可以繼續(xù)在后面添加查詢條件。

通過(guò)以上代碼,我們可以輕松實(shí)現(xiàn)對(duì)json數(shù)組的IN查詢。