日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

自认为有必要学习的Sql 总结,积累 mybatis

發布時間:2024/4/19 编程问答 42 豆豆
生活随笔 收集整理的這篇文章主要介紹了 自认为有必要学习的Sql 总结,积累 mybatis 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

sql會不斷累積,總結,記錄

總結1.
1.DISTINCT關鍵字,對單個字段去重如果說對單個字段排重,再根據另外一個排序的話,使用group up 分組在排序
2.查詢某個字段的數量時,使用group up 分組 使用 count(1) 統計數量

1.mysql自帶函數
INSTR(STR,SUBSTR) 在一個字符串(STR)中搜索指定的字符(SUBSTR),返回發現指定的字符的位置(INDEX);

2.為什么使用count(1)而不使用count(*)?
如果表只有一個字段,count()最快。
count(1)跟count(主鍵)一樣,只掃描主鍵。count( *)跟count(非主鍵)一樣,掃描整個表。明顯前者更快一些。
若含有where語句,則會優先where中條件索引

2019-8-3
1.查詢我瀏覽的用戶
思路分析
1.通過子查詢,先查詢出當前用戶看過的用戶
2.然后對 用戶id進行分組,并且查詢出最大的時間
3.使用 order by 按照時間字段 進行排序

SELECTX.user_id,MAX(X.create_time) create_timeFROM(SELECTr.user_id,r.create_timeFROMbook_member_read_log r,book_contact_member mWHERE m.`id` = r.`member_id`AND m.`user_id` = #{condition.userId}AND r.`user_id` != #{condition.userId}) XGROUP BY X.user_idORDER BY X.create_time DESC

2.根據用戶的產品id 查詢其他用戶是大腕并且產品id 相符合

思路分析
1.查詢當前用戶,單獨取出并放入 list集合
2.mybatis 使用foreach 進行遍歷
3.循環所有用戶,在sql層判斷 其他用戶的某個字段 是否包含傳入的字段 使用instr內置函數

INSTR(STR,SUBSTR) 在一個字符串(STR)中搜索指定的字符(SUBSTR),返回發現指定的字符的位置(INDEX);
.size在sql中還可以判斷list的長度

SELECT DISTINCT*FROMbook_contact_memberWHERE<if test="condition.goodsClassList != null and condition.goodsClassList.size != 0">and <foreach collection="condition.goodsClassList" index="index" item="item" open="(" separator="or" close=")">INSTR( goods_class, #{item} ) > 0</foreach></if>AND user_id != #{condition.userId}AND is_famous = 1

3.查詢數據,-》 我的引薦-》通過我的userid 查詢 我推薦過誰
思路分析
1.查詢出我看過的所有人
2.排除 查看的是否是自己
返回結果memberId memberId是另外一張表的ID 所以兩表關聯查詢

SELECTr.member_id,r.create_timeFROMbook_visit_card_recommand r,book_visit_card c WHERE r.member_id = c.member_id AND c.user_id != #{condition.userId}AND r.user_id = #{condition.userId}GROUP BY r.member_idorder by r.id desc


4.聯合查詢 UNION , 兩張表的 相通數據,關聯之后, 按照時間排序

SELECT DISTINCTx.*FROM(SELECT*FROMbook_contactWHERE user_id = #{condition.userId}AND contact_status = '0'UNIONSELECTc.*FROMbook_contact c,book_contact_member mWHERE c.id = m.contact_idAND m.user_id = #{condition.userId}) XORDER BY x.create_time DESC
  • 聯合查詢 根據一個表中的 同一個字段的不同值,分別查出數據 合并 按照時間排序
  • SELECT x.* FROM(SELECT n.* FROMbook_system_news n,book_contact c WHERE n.`contact_id` = c.`id` AND c.`user_id` = 'e9322b305ebd45d98adc1643aeece2e8' AND news_type IN ('checkContact', 'seachContact') UNIONSELECT n.* FROMbook_system_news n,book_contact_member m WHERE n.`member_id` = m.`id` AND m.`user_id` = 'e9322b305ebd45d98adc1643aeece2e8' AND news_type IN ('userContact')) X ORDER BY x.create_time DESC


    6.數據庫的字段 是 訪問量 ,每次網頁被訪問 數量+1 ,自增長

    <update id="updateOfferValue" parameterType="java.lang.String">update book_contact_memberSEToffer_value = (offer_value + 1)WHERE id = #{id}</update>

    //2020.5.23更新
    7.根據記錄表查詢的數據記錄基礎表 主要學習 case用法

    SELECT a.id,a.create_time,a.task_type,a.task_code,a.key_task,a.key_work,a.work_content,a.lead_depart_id,a.lead_depart,a.legal_duty_ids,a.legal_duty,a.current_stage,a.stage,b.task_status FROMdt_task_base a,(SELECTt1.task_id,case when t2.task_status IS NULL then 0 else 1 end as task_status -- t2.task_status FROM( SELECT task_id FROM dt_task_record WHERE response_companyid = '8a81e781720cbb8901720cbd79610013' GROUP BY task_id ) t1LEFT JOIN ( SELECT task_id, 1 task_status FROM dt_task_record WHERE issue_companyid = '8a81e781720cbb8901720cbd79610013' GROUP BY task_id ) t2 ON t1.task_id = t2.task_id ) b WHEREa.id = b.task_id and a.task_type ='1' limit 0, 20

    //2020.5.28 多條件搜索
    重點學習 多個對象like

    Sql: select count(*) from dt_task_base where (key_task like '%sss%' or task_code like '%sss%' or lead_depart like '%sss%' or legal_duty like '%sss%' or key_work like '%sss%' or work_content like '%sss%') and task_type = ?

    總結

    以上是生活随笔為你收集整理的自认为有必要学习的Sql 总结,积累 mybatis的全部內容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。