SQL牛客网刷题知识所得
select * from 表名
select 列名 from 表名
select 列名1,列名2 from 表名 limit 2(只取两行数据)
select 列名1 as 列名111 from 表名 limit 2(取这列数据的前两个数据,把列名1改成列名111)
如果需要筛选出去重数据,那么就用group by
如果要按照哪一列数据排序,就用order by
如果先按照a列数据排序,再按照b列数据排序,那就order by a,b
升序asc降序desc
--**--
如果说想要查到一个列的数据,里面排倒数第三的,那就用 select * from datatable where column1=(select distinct column1 from datatable order by column1 desc limit 1 offset 2) ;
这括号里面的就是查到了这个倒数第三的数据,外面就是去显示这个列的数据等于这个查到的数据,然后显示这一行的所有数据。distinct是去重,返回值是唯一的。
如果说我们有两张表,我们要显示的内容是两张表中一些列,那么我们用right join的话,就是
比如select 表1.列1,表1.列3,表2.列2 from 表1 right join 表2 on 表2.列3=表1.列3 order by 表1.列1
这个意思就是我最终显示的是 表1.列1,表1.列3,表2.列2 ,是从一张左边是表1,右边是表2 的连接表,这个表会返回左表的所有行,以及右表中在on这里匹配上的行
也就是 表2.列3=表1.列3 ,然后是按照表1的列1来排的
--**--
左连接和右连接(left join right join都是外连接,对于需要匹配的数据所返回的行,都会显示,没匹配上的就显示null,但是内连接就不显示没匹配上的)