近期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
相关推荐
程序员小羊!9 小时前
大数据电商流量分析项目实战:Spark SQL 基础(四)
大数据·sql·spark
我是zxb9 小时前
EasyExcel:快速读写Excel的工具类
数据库·oracle·excel
一位搞嵌入式的 genius10 小时前
前端开发核心技术与工具全解析:从构建工具到实时通信
前端·笔记
代码不停10 小时前
MySQL联合查询
java·数据库·mysql
..过云雨10 小时前
04.【Linux系统编程】基础开发工具2(makefile、进度条程序实现、版本控制器Git、调试器gdb/cgdb的使用)
linux·笔记·学习
沐浴露z10 小时前
Redis内存回收:过期策略与淘汰策略
数据库·redis·缓存
宴之敖者、10 小时前
MySQL——数据库基础
数据库·mysql
张3蜂10 小时前
MongoDB BI Connector 详细介绍与使用指南(手动安装方式,CentOS 7 + MongoDB 5.0.5)
数据库·mongodb·centos
月屯11 小时前
docke笔记下篇
笔记
春时似衿里11 小时前
jmeter配置数据库连接步骤
数据库·jmeter