2013-09-28 54 views
1

所以,我有两个表,第一个例如4个记录,第二个包含例如两排。它们没有任何关系,只是希望它们以图片上显示的方式一起显示。 enter image description here 我知道这可以通过计算它们的行号并使用它们来加入它们来完成,但我很好奇是否有办法在不使用变量的情况下做同样的事情。谢谢你的提醒,和对不起我的英文:)有没有一种简单的方法在mysql中按行号连接行?

+0

你可能想看看这个链接:http://stackoverflow.com/questions/3126972/mysql-row-number。对这些行进行编号,然后在新列上加入JOIN * *可能会起作用。 – slugonamission

+1

他们没有任何关系,但你想把他们加入到一起?那有什么意思?暂时搁置数据库,一个人如何“加入”无关的数据?这是无稽之谈。这就像问一个小行星如何繁殖一只狗。此外,请注意(除非您明确指定了排序),表格是*无序*;因此没有定义哪个记录是“第一”,并且你所描述的问题也是未定义的。除此之外,对于我来说,表格中的DEPTNO列看起来像是应该加入的关系。 – eggyal

+0

你是对的,我是一个愚蠢的屁股:)当然,他们是相关的,他们都参考第三个表。抱歉上面的误导性图片,那只是一个(错误的)样本。 Thanx – user1777122

回答

2

是的,是有办法做到这一点不使用变量,只是挺直SQL
看到这个演示:http://www.sqlfiddle.com/#!2/2eeb2/4

不幸的是,MySQL不实现Oracle,Postgre和MS-SQL等分析函数:
ROW_NUMBER() OVER (partition by ... order by ...)rownum像Oracle一样的伪列,而MySql中这样的查询性能非常差。

SELECT * 
FROM (
    SELECT emp.*, 
     (SELECT count(*) 
     FROM emp e 
     WHERE e.empno <= emp.empno 
     ) rownum 
    FROM emp 
) e 
LEFT JOIN (
    SELECT dept.*, 
     (SELECT count(*) 
      FROM dept d 
      WHERE d.deptno <= dept.deptno 
     ) rownum 
    FROM dept 
) d 
ON e.rownum = d.rownum; 
+0

谢谢,这正是我需要:) – user1777122

相关问题