当前位置: 首页 > article >正文

近期SQL笔记

近期SQL笔记

一些SQL查询语句记录

1.分页查询

SELECT * FROM tbl_note LIMIT 10 OFFSET 20

2.查询总条数

SELECT COUNT(*) FROM tbl_note;

3.多表视图

 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.模糊查询

SELECT * FROM tbl_note WHERE title LIKE '%测试标题%';

5.排序查询

SELECT * FROM tbl_note ORDER BY createat DESC;

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

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

http://www.kler.cn/a/503658.html

相关文章:

  • 一个使用 Golang 编写的新一代网络爬虫框架,支持JS动态内容爬取
  • # CentOS7 系统 /dev/mapper/centos-root满了,十步清理
  • Linux(Centos7)安装Mysql/Redis/MinIO
  • 亿道三防丨三防笔记本是什么意思?和普通笔记本的优势在哪里?
  • linux的大内核锁与顺序锁
  • mac homebrew配置使用
  • 【C++】指针
  • RabbitMQ-消息消费确认
  • ArkTS 组件事件、状态管理与资源管理
  • 图生生 AI 绘画,根据文字描述生成图片
  • 深入理解 ECMAScript 2024 新特性:正则表达式 /v 标志
  • 数据结构的存储方式
  • 【已解决】git clone报错:Failed to connect to github.com port 443: Timed out
  • Nginx安全加固系列:Referrer-Policy
  • 小结:华为路由器常用的操作指令
  • thinkphp 5.0 结合redis 做延迟队列,队列无法被消费
  • ESLint修正代码规范错误
  • 纯 Python、Django、FastAPI、Flask、Pyramid、Jupyter、dbt 解析和差异分析
  • PySide6-UI界面设计
  • 《使用人工智能虚拟原生增强技术取代晚期钆增强技术,用于肥厚型心肌病的无钆心血管磁共振组织表征》论文精读
  • 元宇宙和边缘计算是什么?两者有什么关系?
  • 实用好软-----电脑端链接手机 免root权限管理手机 调试安卓
  • WINFORM - DevExpress -> gridcontrol ---->控件(ColumnEdit控件)
  • 水库水雨情监测系统:实时自动化预警
  • FPGA工程师成长四阶段
  • 核密度估计(Kernel Density Estimation, KDE)是一种非参数统计方法