2011-01-28 81 views
0

我有一個select語句返回5列:排序多個查詢結果

select col1,col2,col3,col4,col5 from table1; 

col1 col2 col3 col4 col5 
9  A B C D 
8  E F G H 

我從表2的另一個select語句返回COL1孤單;

col1 
8 
9 

基於兩個選擇查詢,有沒有寫一個選擇查詢返回結果的一種方式:

col1 col2 col3 col4 col5 
    8  E F G H 
    9  A B C D 

即。基本上從II查詢中排序基於col1的I查詢的輸出。 (這是MySQL的)

PS:第二表列1用於排序&是從表2表2的COL1未來不是一成不變的,它基於呼叫我會得到的COL1更改爲每個用戶操作&表2 &需要對table1的輸出進行排序。

+0

更新問題以演示如何將表2合併,因爲該示例非常明確,否則表2未被使用。 – 2011-01-28 01:10:11

+0

您有screen1,您可以在網頁上移動網格,grid1,grid2,grid3等。它們的排序順序存儲在table2中,其中tabel1返回必須在表格2中存儲的順序網格上顯示的網格信息。 – Sharpeye500 2011-01-28 01:30:19

回答

0

對於這個工作,你需要seriously表2上一個sort列。只有在表2中的ID是不夠。你可以有記錄7,8,9,然後刪除8並添加回來。但是沒有,那不是order它是7,9,8。也許暫時如果表上沒有主鍵,但是當表變大時,即使那個「隱含」順序也會丟失。

因此,假設你有這樣的排序列

Table2 
Sort, Col1 
1, 9 
2, 8 

您的查詢就會成爲

SELECT a.* 
FROM table1 a 
INNER JOIN table2 b ON a.col1 = b.col1 
ORDER BY b.sort ASC 

如果你仍然想依靠MySQL的無證特點或它目前的工作方式,然後你可以試試這個。

# test tables 
create table table1 (col1 int, col2 int, col3 int); 
insert table1 select 8, 1,2; # in this order 
insert table1 select 9, 3,4; 

create table table2 (col1 int); 
insert table2 select 9; # in this order 
insert table2 select 8; 

# select 
SELECT a.* 
FROM table1 a 
INNER JOIN table2 b ON a.col1 = b.col1 

----output---- 
col1 col2 col3 
9  3  4 
8  1  2 

這個工程至少在小桌子,只是因爲尺寸(表2)<尺寸(表1),所以它收集的順序,對保留的table2.col1文件排序。

1

使用ORDER BY:

SELECT col1,col2,col3,col4,col5 
    FROM table1 
ORDER BY col1 

默認情況下,ORDER BY是ASC。

SELECT col1,col2,col3,col4,col5 
    FROM table1 
ORDER BY col1 DESC 

...將把col1中的9作爲返回的第一條記錄。

0

不確定t1.col1和t2.col2之間的關係。可能尋找這樣的事情,雖然:

SELECT t2.col1, t1.col2, t1.col3, t1.col4, t1.col5 
    FROM table2 t2 
INNER JOIN table1 t1 ON t1.col1 = t2.col1 
ORDER BY t2.col1 ASC