借鑑: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.外來鍵約束 預設的使用者所能看到的約束都是外來鍵的一種約束 嚴格模式...