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

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

MySQL獲取多個(gè)原始數(shù)據(jù)的交集

MySQL獲取多個(gè)原始數(shù)據(jù)的交集

PHP
繁華開滿天機(jī) 2022-10-28 15:49:32
我有如下表(recipe_categories)結(jié)構(gòu)recipe_id   sub_category_id1           21           31           52           32           53           23           5我sub_category_id從 API 獲?。ㄋ嵌禾?hào)分隔的),我想要recipe_id哪個(gè)都給出了 sub_category_id示例:1)如果用戶sub_category_id在 API 中傳遞 3,5 所以配方 id 1 和 2 有 sub_category_id 3 和 5 這里recipe_id3 將被忽略,因?yàn)樗挥衧ub_category_id5 而不是 3 所以結(jié)果是recipe_id1 和 22)如果用戶通過sub_category_id2,3,5 所以結(jié)果只有recipe_id1使用 PHP,我嘗試分解 id 并創(chuàng)建 MySQL 查詢,如下所示,它正在工作: SELECT * FROM       ( SELECT *,GROUP_CONCAT(sub_category_id) as      subcat FROM `recipe_categories` group by recipe_id      ORDER BY `id` DESC )    as a where find_in_set('5',subcat)    and find_in_set('6',subcat) and find_in_set('7',subcat)在這里,使用 for 循環(huán)我做了多個(gè) find_in_set所以我的問題是,有沒有更好的方法可以直接從 MySQL 查詢中找到預(yù)期結(jié)果,而無需使用 PHP 創(chuàng)建查詢。
查看完整描述

2 回答

?
紫衣仙女

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

這是處理您的要求的規(guī)范方法:


SELECT recipe_id

FROM recipe_categories

WHERE sub_category_id IN (3, 5)

GROUP BY recipe_id

HAVING COUNT(DISTINCT sub_category_id) = 2;

您可能需要做一些額外的工作才能使用準(zhǔn)備好的語句從 PHP 中實(shí)現(xiàn)這一點(diǎn)。


查看完整回答
反對(duì) 回復(fù) 2022-10-28
?
紅糖糍粑

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

您可以通過計(jì)算匹配數(shù)sub_category_id(FIND_IN_SET用于查找它們)并將其與字符串中的值數(shù)(可以通過減去從原始長度中刪除逗號(hào)的長度):


SELECT recipe_id

FROM recipe_categories

WHERE FIND_IN_SET(sub_category_id, '2,3,5')

GROUP BY recipe_id

HAVING COUNT(DISTINCT sub_category_id) = LENGTH('2,3,5') - LENGTH(REPLACE('2,3,5', ',', '')) + 1

輸出(用于您的樣本數(shù)據(jù))


recipe_id

1

dbfiddle 上的演示


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

添加回答

舉報(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)