欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

一些复杂的Mysql语句

程序员文章站 2022-04-29 15:14:01
...

      微博:http://weibo.com/guoyunwb

     很久没写过SQL了,还记得是第一份工作的时候,做增删改查,好好的练了下SQL。后来一直做些底层的工作SQL就没怎么写过了。

      现在加入了一家创业公司,什么都要去接触下.有同事纠结于一些SQL的写法,我尝试着写下.顺便这里就记录下。这里主要基于MYSQL。

      首先创建临时表以及插入临时数据

      

DROP TABLE IF EXISTS TMP_A;
DROP TABLE IF EXISTS TMP_B;
CREATE TEMPORARY TABLE TMP_A(C1 INT, C2 INT);
CREATE TEMPORARY TABLE TMP_B(C1 INT, C2 INT);
INSERT INTO TMP_A VALUE(1,1),(2,2),(3,3);
INSERT INTO TMP_B VALUE(10,10),(20,20),(30,30);

 

 

      1.Mysql中获取行号

SELECT @i:=@i+1 AS ROW_NUMBER, A.C1,A.C2 
FROM TMP_A A,(SELECT @i:=0) FOO_A

    里面的ROW_NUMBER就是行号了

    

    2.获得多张表中的几列,并且这几张表没有映射字段,也就是说不能用传统的SELECT TMP_A.C1,TMP_A.C2,TMP_B,C1,TMP_B.C2 FROM TMP_A JOIN TMP_B ON TMP_A.XX=TMP_B.XX

    这里还是利用以上的行号去做JOIN:

SELECT AA.ROW_NUMBER,AA.C1,AA.C2,BB.C1,BB.C2 FROM 
	(SELECT @i:=@i+1 AS ROW_NUMBER, A.C1,A.C2 
		FROM TMP_A A,(SELECT @i:=0) FOO_A) AA  
INNER JOIN 
	(SELECT @j:=@j+1 AS ROW_NUMBER, B.C1,B.C2 
		FROM TMP_B B,(SELECT @j:=0) FOO_B) BB
ON 
AA.ROW_NUMBER = BB.ROW_NUMBER;

 

 更多技术文章、感悟、分享、勾搭,请用微信扫描:

一些复杂的Mysql语句
            
    
    博客分类: DB