近期SQL笔记

近期SQL笔记

一些SQL查询语句记录

1.分页查询

sql 复制代码
SELECT * FROM tbl_note LIMIT 10 OFFSET 20

2.查询总条数

sql 复制代码
SELECT COUNT(*) FROM tbl_note;

3.多表视图

sql 复制代码
 SELECT note.id,
    note.title,
    note.description,
    note.url,
    note.createat,
    ct.name AS category,
    array_agg(tag.name) AS tags
   FROM tbl_notes note,
    tbl_tags tag,
    tbl_note_tag nt,
    tbl_categories ct
  WHERE note.id = nt.noteid AND tag.id = nt.tagid AND note.categoryid = ct.id
  GROUP BY note.id, note.title, note.description, note.url, ct.name;

4.模糊查询

sql 复制代码
SELECT * FROM tbl_note WHERE title LIKE '%测试标题%';

5.排序查询

sql 复制代码
SELECT * FROM tbl_note ORDER BY createat DESC;

补:插入多个表数据的函数

typescript 复制代码
CREATE OR REPLACE FUNCTION "public"."add_note"("param_title" varchar, "param_description" text, "param_url" varchar, "param_categoryid" varchar, "tags" _varchar)
  RETURNS TABLE("result" bool, "msg" text) AS $BODY$BEGIN
	-- Routine body goes here...
	DECLARE
  new_noteid VARCHAR;
  new_tagid VARCHAR;
	BEGIN
			INSERT INTO tbl_notes (title,description,url,categoryid) VALUES (param_title,param_description,param_url,param_categoryid) RETURNING id INTO new_noteid;
			FOR i IN 1..array_length(tags, 1) LOOP
				INSERT INTO tbl_tags(name) VALUES (tags[i]) ON CONFLICT (name) DO NOTHING RETURNING id INTO new_tagid;
				
				IF NOT FOUND THEN
				  SELECT id INTO new_tagid
				FROM tbl_tags
				  WHERE name = tags[i];
			  END IF;
				INSERT INTO tbl_note_tag (noteid,tagid) VALUES (new_noteid,new_tagid);
      END LOOP;
			
	
			RETURN QUERY SELECT TRUE as result,'add note success' as msg;
	EXCEPTION
	WHEN OTHERS THEN
			PERFORM write_log('add_note','Excepted error:'||SQLERRM);
			RETURN QUERY SELECT FALSE as result, 'Excepted error:'||SQLERRM;
	END;
END$BODY$
  LANGUAGE plpgsql VOLATILE
  COST 100
  ROWS 1000
相关推荐
普马萨特32 分钟前
实体与位置关系的数据从哪里来:获取、治理与仍待解决的问题
网络·数据库
醉颜凉1 小时前
MySQL 8 忘记 root 密码?这两种方法帮你轻松解决
数据库·mysql·adb
有梦想的骇客1 小时前
PyTorch学习笔记
pytorch·笔记·学习
RestCloud1 小时前
集成链路监控体系搭建:接口调用、数据流转与异常告警全覆盖
数据库·数据安全·ipaas·api管理·数据监控·集成平台·api 治理
Capricorn19881 小时前
个人知识库接入大模型频现“幻觉引用”?排查 RAG 溯源失效问题,解析知芽构建可信第三大脑的底层架构
大数据·论文阅读·人工智能·笔记·架构·论文笔记
陈年老古董2 小时前
深度学习入门笔记:从神经元到深度神经网络
人工智能·笔记·深度学习·神经网络·学习
xxwl5852 小时前
MySQL 基础学习笔记
数据库·mysql
SKH.2 小时前
Linux软件编程(6)线程间通信
java·开发语言·数据库
Rain的Java大神之路2 小时前
PC版网站被狂刷怎么处理
java·数据库·redis·后端·mysql·web安全·运维开发
闻哥2 小时前
小表驱动大表——SQL查询优化的核心原则(深度剖析+流程图)
数据库·sql·流程图