近期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
相关推荐
薛定谔的算法14 小时前
phoneGPT:构建专业领域的检索增强型智能问答系统
前端·数据库·后端
Databend15 小时前
Databend 亮相 RustChinaConf 2025,分享基于 Rust 构建商业化数仓平台的探索
数据库
得物技术16 小时前
破解gh-ost变更导致MySQL表膨胀之谜|得物技术
数据库·后端·mysql
使一颗心免于哀伤21 小时前
《设计模式之禅》笔记摘录 - 21.状态模式
笔记·设计模式
Raymond运维21 小时前
MariaDB源码编译安装(二)
运维·数据库·mariadb
沢田纲吉21 小时前
🗄️ MySQL 表操作全面指南
数据库·后端·mysql
RestCloud2 天前
SQL Server到Hive:批处理ETL性能提升30%的实战经验
数据库·api
RestCloud2 天前
为什么说零代码 ETL 是未来趋势?
数据库·api
ClouGence2 天前
CloudCanal + Paimon + SelectDB 从 0 到 1 构建实时湖仓
数据库
DemonAvenger2 天前
NoSQL与MySQL混合架构设计:从入门到实战的最佳实践
数据库·mysql·性能优化