第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號(hào)安全,請(qǐng)及時(shí)綁定郵箱和手機(jī)立即綁定
已解決430363個(gè)問題,去搜搜看,總會(huì)有你想問的

Mysql 通過其他行中的值排除行(獲取樹的葉子)

Mysql 通過其他行中的值排除行(獲取樹的葉子)

PHP
qq_遁去的一_1 2023-10-21 16:34:41
我有這張表:+------------+-------------+------------------+| product_id | category_id |  parent_category |+------------+-------------+------------------+|          1 |         aaa |                0 ||          1 |         bbb |              aaa ||          1 |         ccc |              bbb ||          2 |         aaa |                0 ||          2 |         bbb |              aaa ||          2 |         ddd |                0 |因此,我想排除同一類別中的父類別product_id,以便僅從表中獲取最低級(jí)別的類別。parent_category 0意味著它是頂級(jí)類別(沒有父級(jí))例如,第一行 withcategory aaa被排除,因?yàn)榈诙兄杏幸粋€(gè)類別bbb,并且aaa是bbb(product_id=1) 的父級(jí)。期望的輸出:+------------+---------------+| product_id |   category_id |+------------+---------------+|          1 |           ccc |          |          2 |           bbb |           |          2 |           ddd |所以實(shí)際上類別結(jié)構(gòu)就像aaa->bbb->ccc和ddd->eee->fff。aaa bbb ddd如果我想要獲得類別中的產(chǎn)品bbb和ddd。我的想法: php 正在使用中,所以我會(huì)創(chuàng)建骯臟的 php 循環(huán)。編輯:澄清獲取樹葉是一個(gè)問題
查看完整描述

2 回答

?
白豬掌柜的

TA貢獻(xiàn)1893條經(jīng)驗(yàn) 獲得超10個(gè)贊

所以當(dāng)我做對(duì)了你想要得到一棵樹的葉子。如果您沒有嚴(yán)格限制,recursive CTE您可以簡單地檢查給定類別是否有子級(jí)。如果不是 - 它是一個(gè)葉子(尊重相同的product_id)。


SELECT product_id, category_id

FROM categories c

WHERE

    (

        SELECT

            count(*)

        FROM

            categories c2

        WHERE

            c2.parent_category = c.category_id

            AND c2.product_id = c.product_id

    ) = 0

工作示例。

如果你想檢查product_id每個(gè)父母的情況,這將是行不通的。


查看完整回答
反對(duì) 回復(fù) 2023-10-21
?
慕村225694

TA貢獻(xiàn)1880條經(jīng)驗(yàn) 獲得超4個(gè)贊

嘗試使用recursive CTE:


with recursive cte as (

      select 

        *, 0 as level, concat(product_id, '-', category_id) as ar 

      from 

        samp 

      where 

        parent_category ='0'

union all

      select 

        t1.*, t2.level+1, ar

      from samp t1 

        inner join 

           cte t2 

        on t1.parent_category =t2.category_id and t1.product_id=t2.product_id

),

cte1 as (

      select 

        *, row_number() over (partition by ar order by level desc) as rank_ 

      from 

        cte 

         )


    select 

        product_id, category_id, parent_category 

    from 

        cte1 

    where 

        rank_=1

演示版


查看完整回答
反對(duì) 回復(fù) 2023-10-21
  • 2 回答
  • 0 關(guān)注
  • 123 瀏覽

添加回答

舉報(bào)

0/150
提交
取消
微信客服

購課補(bǔ)貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動(dòng)學(xué)習(xí)伙伴

公眾號(hào)

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號(hào)