mysql外來鍵是多個id組成的字串,查詢方法

2022-09-02 10:27:13 字數 1765 閱讀 1261

借鑑:mysql使用instr達到in(字串)的效果

結論:select * from 表名where instr(concat(字串),concat(表id))

該錶的設計連第一正規化都沒有實現,不能容忍!!!!!!!!!!!!!

表一:

表二:

首先想到的思路,對字串進行遍歷查詢,但是mybatis中collection不接受string,所以我沒有實現這個思路。

#

第二個思路,使用concat進行字串拼接,如「1,2,3,4」轉化為(「1,2,3,4」),但是mysql where in 後不可以使用字串,無法識別,這個思路也沒有實現。

insert into course_plan (plan_name,plan_class_id,act_id)

-- concat_ws進行字串拼接,以,為分隔符

values (#,#,concat_ws(',',#))

更新:

上述語句出現了bug,本來相查詢id為17的值,但是順帶著7也出來了

解決方法:

select * from action where instr

(concat

(',',17

,','),

concat

(','

,act_id,

',')

)

方法**於該片部落格:mysql使用instr達到in(字串)的效果

意外發現

select * from action where instr

(concat

(act_id)

,concat(17));

將id欄位和字串互換位置後,這個問題好像 解決了

但是在這種情況下

查詢出現問題!!!所以行不通

查詢instr()的用法,有所明悟:

instr(str,substr) 在乙個字串(str)中搜尋指定的字元(substr),返回發現指定的字元的位置(index);

str 被搜尋的字串

substr 希望搜尋的字串

在字串str裡面,字串substr出現的第乙個位置(index),index是從1開始計算,如果沒有找到就直接返回0,沒有返回負數的情況。

mysql 自己是自己的外來鍵 mysql外來鍵的使用

一早就知道有mysql有外來鍵這回事,但是貌似平時的專案中用到的並不多,以至於我沒有去研究過這個東西,也不知道該怎麼用。當然也不清楚對效能的影響。這篇文章先搞清楚外來鍵的作用。首先來新增一張表,做為測試要用的一張參考表。create table user id int 11 not null aut...

mysql外來鍵的應用 MySQL外來鍵應用

mysql外來鍵應用,所有tables必須是innodb型,它們不能是臨時表.因為在mysql中只有innodb型別的表才支援外來鍵.mysql版本 5.5.28 系統平台 rhel 5.8 32位 1 外來鍵的使用 外來鍵的作用,主要有兩個 乙個是讓資料庫自己通過外來鍵來保證資料的完整性和一致性 ...

mysql 所有外來鍵 mysql中的外來鍵

mysql中的外來鍵 1.預設的外來鍵存在之後,會對資料進行約束。1 約束1 如果子表中新增的資料,外來鍵字段對應的資料如果在父表中不存在,那麼新增失敗。有資料之後 2 約束2 父表不能刪除 或者修改 乙個被子表引用的資料記錄 3.外來鍵約束 預設的使用者所能看到的約束都是外來鍵的一種約束 嚴格模式...