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

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

MySQL解決方案基于2個(gè)匹配的ID連接多行文本

MySQL解決方案基于2個(gè)匹配的ID連接多行文本

PHP
郎朗坤 2023-07-08 16:22:08
我正在使用 MySQL (5.5.65-MariaDB) 并有一個(gè)由表、generated_text_tbl. 以下是該表中的一些示例數(shù)據(jù)。-----------------------------------------------id | substance_id | display_id | generated_text   -----------------------------------------------1  | 54           | 139        | foo-----------------------------------------------2  | 54           | 139        | bar----------------------------------------------3  | 1933         | 139        | baz-----------------------------------------------  4  | 38           | 27         | xyz-----------------------------------------------id是一個(gè)AUTO_INCREMENT字段。和是外鍵,引用其他表中的記錄(substance_id分別為和)。display_idsubstances.iddisplay.id我想輸出字段中的文本generated_text- 用 HTML 換行符 ( <br>) 分隔 - 如果存在匹配substance_id和display_id行。如果沒(méi)有匹配項(xiàng)(即單獨(dú)的行),則generated_text仍應(yīng)輸出,但不需要該<br>字符,因?yàn)闆](méi)有任何內(nèi)容可以分隔。我有一個(gè)可以在 PHP 中運(yùn)行的解決方案,但如果可能的話,我想要一個(gè)純 SQL 解決方案。我已經(jīng)寫出了我的邏輯,因?yàn)檫@在技術(shù)上是可行的,盡管是在 PHP 中。對(duì)于上面的示例數(shù)據(jù),正確的輸出如下:foo<br>bar:因?yàn)橛?2 行substance_id和display_id匹配(分別是 54 和 139)。baz:只有 1 行WHERE substance_id = 1933 AND display_id = 139。xyz:與上面的邏輯相同,只有 1 行WHERE substance_id = 38 AND display_id = 27。從邏輯上講,我的 PHP 腳本是這樣工作的:所有 uniquesubstance_id都被加載到一個(gè)數(shù)組中。相當(dāng)于SQL SELECT DISTINCT(substance_id) FROM generated_text_tbl。所有 uniquedisplay_id都被加載到一個(gè)數(shù)組中。相當(dāng)于SQL SELECT DISTINCT(display_id) FROM generated_text_tbl。循環(huán) (1),并在 (2) 上進(jìn)行內(nèi)循環(huán)。這有效地循環(huán)了每個(gè)substance_id和display_id組合,即:substance_id = 54 AND display_id = 139(2 行)substance_id = 54 AND display_id = 27(0 行)substance_id = 1933 AND display_id = 139(1 行)substance_id = 1933 AND display_id = 27(0 行)substance_id = 38 AND display_id = 139(0 行)substance_id = 38 AND display_id = 27(1 行)generated_text然后它根據(jù)上述條件獲得一個(gè)數(shù)組。如果數(shù)組大小大于 1 個(gè)元素,則<br>在每個(gè)元素之間添加一個(gè)字符。如果只有 1 個(gè)元素,則<br>不需要字符,因?yàn)橹挥?1 行,generated_text因此不需要分解任何字符。var_dump($output)上面腳本的結(jié)果是foo<br>bar,這就是我想要的。盡管這在邏輯上可行,但效率很低(當(dāng)表中有數(shù)千行時(shí)generated_text)。有沒(méi)有一個(gè)純 SQL 的解決方案?
查看完整描述

1 回答

?
肥皂起泡泡

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

你在追求這樣的東西不是嗎?

查詢1

SELECT?

? `substance_id` ,?

? `display_id`,?

? GROUP_CONCAT( `generated_text` SEPARATOR '<br>' ) as concact_text

from generated_text_tbl?

group by?

? `substance_id` ,?

? ?`display_id`

結(jié)果


| substance_id | display_id | concact_text |

|--------------|------------|--------------|

|? ? ? ? ? ?38 |? ? ? ? ?27 |? ? ? ? ? xyz |

|? ? ? ? ? ?54 |? ? ? ? 139 |? ?foo<br>bar |

|? ? ? ? ?1933 |? ? ? ? 139 |? ? ? ? ? baz |

查詢2:


SELECT?

? `substance_id` ,?

? `display_id`,?

? GROUP_CONCAT( `generated_text` ORDER BY id DESC SEPARATOR '<br>') as concact_reverse_text

from generated_text_tbl?

group by?

? `substance_id` ,?

? ?`display_id`

結(jié)果


| substance_id | display_id | concact_reverse_text |

|--------------|------------|----------------------|

|? ? ? ? ? ?38 |? ? ? ? ?27 |? ? ? ? ? ? ? ? ? xyz |

|? ? ? ? ? ?54 |? ? ? ? 139 |? ? ? ? ? ?bar<br>foo |

|? ? ? ? ?1933 |? ? ? ? 139 |? ? ? ? ? ? ? ? ? baz |

查看完整回答
反對(duì) 回復(fù) 2023-07-08
  • 1 回答
  • 0 關(guān)注
  • 141 瀏覽

添加回答

舉報(bào)

0/150
提交
取消
微信客服

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

幫助反饋 APP下載

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

公眾號(hào)

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