2013-09-28 50 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

相關問題