几种SQL语句的写法

1.一张表中有用户信息表user(user_id,nickname),另外一张表联系人表contact(user_id,friend_id).现在要找出联系人的信息

SELECT U1.nickname as myselft,U2.nickname as friend FROM contact C inner join user U1 on C.user_id=U1.user_id inner join user U2 on C.friend_id=U2.id

以上如果friend_id可能为空的话,则后面那个inner join 改为left join.

2.查找出好友及自己发的帖子,帖子表invitation(id,owner_id,title,content)

SELECT * FROM ( invitation I inner join user U on U.user_id=I.owner_id )
inner join
(select friend_id from contacts where user_id=2 union all select 2) as B
 on B.friend_id=I.user_id

在mysql中就不要使用子查询了,mysql 5.5以前的版本对子查询效率极差。

时间: 2024-08-27 19:06:14

几种SQL语句的写法的相关文章

3种SQL语句分页写法

在开发中经常会使用到数据分页查询,一般的分页可以直接用SQL语句分页,当然也可以把分页写在存储过程里,下面是三种比较常用的SQL语句分页方法,下面以每页5条数据,查询第3页为例子: 第一种:使用not in,select top 方法: select top 5 * from T_user where ID not in(select top (3-1)*5 id from T_user order by ID) 说明:select top 页大小 [要查询的字段名称] from 表名 wher

LAMP下的PHP执行sql语句的写法

LAMP下的PHP执行sql语句的写法: 代码如下: @mysql_connect("localhost", "root","1981427") //选择数据库之前需要先连接数据库服务器 or die("数据库服务器连接失败"); @mysql_select_db("test") //选择数据库mydb or die("数据库不存在或不可用"); $query = @mysql_quer

必须掌握的30种SQL语句优化

1.’对查询进行优化,应尽量避免全表扫描,首先应考虑在 where 及 order by 涉及的列上建立索引. 2.应尽量避免在 where 子句中使用!=或<>操作符,否则将引擎放弃使用索引而进行全表扫描. 3.应尽量避免在 where 子句中对字段进行 null 值判断,否则将导致引擎放弃使用索引而进行全表扫描,如: select id from t where num is null 可以在num上设置默认值0,确保表中num列没有null值,然后这样查询: select id from

30种SQL语句优化

01 对查询进行优化,应尽量避免全表扫描,首先应考虑在 where 及 order by 涉及的列上建立索引. 02 应尽量避免在 where 子句中使用!=或<>操作符,否则将引擎放弃使用索引而进行全表扫描. 03 应尽量避免在 where 子句中对字段进行 null 值判断,否则将导致引擎放弃使用索引而进行全表扫描,如: select id from t where num is null 可以在num上设置默认值0,确保表中num列没有null值,然后这样查询: select id fr

mysql的几种SQL语句

一.数据查询语言(DQL) DQL全称 DATA Query Language,作用是从表中获取数据,用的最多的关键字是SELECT,保留字有WHERE ,ORDER BY ,GROUP BY等 1.select user,host from mysql.user; select user,host from mysql.user order by user asc:用户名升序 select user,host from mysql.user order by user desc:用户名倒序 二

sql语句的写法

条件一.条件二条件一满足则条件二就不要加了.条件一不满足则按照条件二查询 where 条件1 or (not 条件1 and 条件2) 假设条件一: a.id=b.id 条件二: a.NAME=b.NAME WHERE Decode(a.id,b.id,1,Decode(a.NAME,b.NAME,1))=1

如何写出高性能的SQL语句

1. 首先要搞明白什么叫执行计划? 执行计划是数据库根据SQL语句和相关表的统计信息作出的一个查询方案,这个方案是由查询优化器自动分析产生的,比如一条SQL语句如果用来从一个 10万条记录的表中查1条记录,那查询优化器会选择"索引查找"方式,如果该表进行了归档,当前只剩下5000条记录了,那查询优化器就会改变方案,采用 "全表扫描"方式. 可见,执行计划并不是固定的,它是"个性化的".产生一个正确的"执行计划"有两点很重要:

ORACLE性能优化之SQL语句优化

版权声明:本文为博主原创文章,未经博主允许不得转载. 目录(?)[+] 操作环境:AIX +11g+PLSQL 包含以下内容: 1.  SQL语句执行过程 2.  优化器及执行计划 3.  合理应用Hints 4.  索引及应用实例 5.   其他优化技术及应用 1.SQL语句执行过程 1.1 SQL语句的执行步骤 1)语法分析,分析语句的语法是否符合规范,衡量语句中各表达式的意义. 2)语义分析,检查语句中涉及的所有数据库对象是否存在,且用户有相应的权限. 3)视图转换,将涉及视图的查询语句转

数据库性能优化之SQL语句优化

一.问题的提出 在应用系统开发初期,由于开发数据库数据比较少,对于查询SQL语句,复杂视图的的编写等体会不出SQL语句各种写法的性能优劣,但是如果将应用系统提交实际应用后,随着数据库中数据的增加,系统的响应速度就成为目前系统需要解决的最主要的问题之一.系统优化中一个很重要的方面就是SQL语句的优化.对于海量数据,劣质SQL语句和优质SQL语句之间的速度差别可以达到上百倍,可见对于一个系统不是简单地能实现其功能就可,而是要写出高质量的SQL语句,提高系统的可用性. 在多数情况下,Oracle使用索