一:GROUP_CONCAT(distinct )

我在解决join连表查询时发现了一对多的问题,这时一个product_id对应一个tag_id,这个tag_id又对应一个title;下面就用到了
GROUP_CONCAT()的这个方法;对某个字段分组处理;处理之后数据是我想到的了;不对,这里面出现了一种情况,什么呢?

我需要的这个字段出现了重复的现象,why?我在排查的时候发现我在逻辑里面做了for循环处理,不怕!还是有解决办法的,GROUP_CONCAT(distinct tag.title) as tags,distinct就是这个,它是可以去重的;
Sql:
SELECT `prod`.*, `option`.`id` as `option_id`, `option`.`title` as `op_title`, `option`.`position` as `option_position`, `option`.`value`, `variant`.`id` as `veriant_id`, `variant`.`title` as `variant_title`, `variant`.`position` as `variant_position`, `variant`.`price` as `variant_price`, `variant`.`market_price` as `variant_market_price`, `variant`.`quantity` as `variant_quantity`, `variant`.`sku`, `variant`.`image_src`, `variant`.`option1`, `variant`.`option2`, `variant`.`option3`, CONVERT(variant.option1, DECIMAL(5, 1)) as option_sort, GROUP_CONCAT(distinct tag.title) as tags FROM `ci_product` as `prod` LEFT JOIN `ci_product_option` as `option` ON `prod`.`id` = `option`.`prod_id` LEFT JOIN `ci_product_variant` as `variant` ON `prod`.`id` = `variant`.`prod_id` LEFT JOIN `ci_product_tag_relation` as `relation` ON `prod`.`id` = `relation`.`product_id` LEFT JOIN `ci_tag` as `tag` ON `relation`.`tag_id` = `tag`.`id` WHERE `prod`.`id` IN('202') GROUP BY `variant`.`option1`, `variant`.`option2`, `variant`.`option3`, `tags` ORDER BY `option1` ASC, `option2` ASC;
输出结果:
Array
(
[0] => Array
(
[id] => 202
[title] => CMY+Optic+Prism+Cube
[handle] => cmy-optic-prism-cube
[cat_id] => 0
[vo_id] => 0
[thumbs] => //cdn.shopify.com/s/files/1/0275/0978/4651/products/prism2.jpg?v=1600162647
[price] => 24.99
[market_price] => 40.00
[shipp_price] => 0
[tuijian] => 0
[sell_num] => 0
[quantity] => 999
[status] => 1
[desc] => %3Ch1%3E%3Cstrong%3EAppreciate+Light+In+All+Angles%21%3C%2Fstrong%3E%3C%2Fh1%3E%3Cp%3E%3Cstrong%3ETheCMY+Optic+Prism+Cube+is+a+cube+made+of+multicolored+glass+panels+that+manipulate+light+in+creating+kaleidoscope-looking+patterns+through+light+refraction.+With+its+beautiful+and+unique+design%2C+enjoy+the+various+colors+from+different+angles+even+when+youre+at+the+same+place%3B+truly+an+amazing+visual+experience%21%26nbsp%3B%3Cimg+src%3D%22https%3A%2F%2Fmedia4.giphy.com%2Fmedia%2FRizNHqVx9pPHDbO9x2%2Fgiphy.gif%22+alt%3D%22Animated+GIF%22+width%3D%22528%22+height%3D%22296%22%2F%3E%3C%2Fstrong%3E%3C%2Fp%3E%3Ch2%3E%3Cstrong%3EFeatures%3A%3C%2Fstrong%3E%3C%2Fh2%3E%3Cul+class%3D%22+list-paddingleft-2%22%3E%3Cli%3E%3Cp%3E%3Cstrong%3EPocket-Sized+Entertainment%3A%3C%2Fstrong%3E+With+its+very+small+design%2C+you+can+carry+the+cube+anywhere%2C+it+can+even+fit+right+in+your+pocket.+Take+it+out+and+let+it+radiate+into+a+delightful+optical+entertainment+that+everyone+will+enjoy+and+get+fascinated+with.%26nbsp%3B%3Cimg+src%3D%22https%3A%2F%2Fcdn.shopify.com%2Fs%2Ffiles%2F1%2F0275%2F0978%2F4651%2Ffiles%2F1_a496f9c7-de5c-4452-a91e-da1700c87389_480x480.jpg%3Fv%3D1599603489%22+alt%3D%22%22+width%3D%22488%22+height%3D%22327%22%2F%3E%3C%2Fp%3E%3C%2Fli%3E%3Cli%3E%3Cp%3E%3Cstrong%3EInstant+Photography+Filter%3A%3C%2Fstrong%3E+It+is+a+great+addition+to+your+photography+accessories%2C+making+your+pictures+unique+without+any+post-editing+magic.+Say+goodbye+to+your+favorite+filters%21%26nbsp%3B%3Cimg+src%3D%22https%3A%2F%2Fcdn.shopify.com%2Fs%2Ffiles%2F1%2F0275%2F0978%2F4651%2Ffiles%2F6_04e32a6e-c46c-4e0b-be3d-16bc858eb2a4_480x480.jpg%3Fv%3D1599642252%22+alt%3D%22%22+width%3D%22489%22+height%3D%22489%22%2F%3E%3C%2Fp%3E%3C%2Fli%3E%3Cli%3E%3Cp%3E%3Cstrong%3EGreat+Science+Experiment%3A%3C%2Fstrong%3E+In+creating+wonderful+colors+through+beam+splitting+and+light+refraction%2C+it+is+perfect+in+sharing+knowledge+and+educating+people+on+how+a+prism+works.+Make+science+easier+to+understand+using+this+product%2C+both+for+kids+and+adults%21%26nbsp%3B%3Cimg+src%3D%22https%3A%2F%2Fcdn.shopify.com%2Fs%2Ffiles%2F1%2F0275%2F0978%2F4651%2Ffiles%2F3_3329d6c7-d18f-4a41-b217-cbea5e84864f_480x480.jpg%3Fv%3D1599604059%22+alt%3D%22%22+width%3D%22491%22+height%3D%22490%22%2F%3E%3C%2Fp%3E%3C%2Fli%3E%3Cli%3E%3Cp%3E%3Cstrong%3EPremium%2C+Long-Lasting+Quality%3A%3C%2Fstrong%3E+All+sides+of+the+cube+refracts+light+for+more+color+combinations.+The+glass+panels+do+not+fade+easily+and+are+scratch-resistant%2C+guaranteeing+a+maximized+use+for+the+years+to+come.%26nbsp%3B%3Cimg+src%3D%22https%3A%2F%2Fcdn.shopify.com%2Fs%2Ffiles%2F1%2F0275%2F0978%2F4651%2Ffiles%2F2_87121e01-c79e-4a08-8218-95ef6bec72a1_480x480.jpg%3Fv%3D1599604305%22+alt%3D%22%22+width%3D%22491%22+height%3D%22491%22%2F%3E%3C%2Fp%3E%3C%2Fli%3E%3C%2Ful%3E%3Ch2%3ESpecifications%3A%3C%2Fh2%3E%3Cp%3EMaterial%3A+Glass%3Cbr%2F%3ESize%3A+12.7mm+%26+18mm+sizes+available%3Cbr%2F%3EWeight%3A+About%26nbsp%3B5g%3Cbr%2F%3EUses%3A+For+teaching%26nbsp%3Bor%26nbsp%3Bresearch%26nbsp%3Btool%26nbsp%3Bor+for%26nbsp%3Bdecoration%3C%2Fp%3E%3Ch2%3EProduct+Includes%3A%3C%2Fh2%3E%3Cp%3E1+x+Cube%3Cbr%2F%3E1+x+Gift+Box+with+Built-In+Light%3C%2Fp%3E%3Ch2%3E%3Cem%3EOrders+delivered+within+5-10+days%21%3C%2Fem%3E%3C%2Fh2%3E%3Ch2%3EFind+the+beauty+in+light+with+the%26nbsp%3BCMY+Optic+Prism+Cube%21+Grab+one+for+you+and+as+a+gift+while+supplies+last%21%26nbsp%3B%3C%2Fh2%3E
[tags] => cmy,optic,Cube
[created_at] => 1600250980
[update_at] => 1600250980
[sort] => 0
[vendor] => Sparbi
[type] => 15370707
[finalsale] => 0
[click_num] => 0
[checkout_num] => 0
[item_id] => 61445070683442
[seo_title] =>
[seo_desc] =>
[option_id] => 1878
[op_title] => Offer
[option_position] => 1
[value] => ["1 Cube","2 Cubes","3 Cubes"]
[veriant_id] => 58485983940626
[variant_title] => 1 Cube
[variant_position] => 3
[variant_price] => 24.99
[variant_market_price] => 40.00
[variant_quantity] => 999
[sku] => FC1645105902
[image_src] => //cdn.shopify.com/s/files/1/0275/0978/4651/products/prism2.jpg?v=1600162647
[option1] => 1 Cube
[option2] => 12.7mm
[option3] =>
[option_sort] => 1.0
)
)
在处理一对多关系的SQL查询时,遇到GROUP_CONCAT方法导致字段重复的问题。通过在GROUP_CONCAT中加入DISTINCT关键字,如GROUP_CONCAT(DISTINCT tag.title) as tags,可以有效去除重复项,实现数据去重。示例SQL查询展示了在商品与标签关联查询中如何应用此方法。
2837

被折叠的 条评论
为什么被折叠?



