`
guoyunsky
  • 浏览: 839361 次
  • 性别: Icon_minigender_1
  • 来自: 上海
博客专栏
3d3a22a0-f00f-3227-8d03-d2bbe672af75
Heritrix源码分析
浏览量:203258
Group-logo
SQL的MapReduce...
浏览量:0
社区版块
存档分类
最新评论

一些复杂的Mysql语句

    博客分类:
  • DB
 
阅读更多

      微博: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;

 

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

2
1
分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics