2014-01-31 88 views
-1

我需要在MySQL中選擇多行。我有一個名爲'proc_table'的過程,它現在返回3個字段 - oid,objet和db.cars中的一行。查詢是有限的(由我)。MySQL選擇前5行(多行)

我需要刪除該限制,並進行查詢,將返回我第5行。如果它們不存在,則不會引用(具有空值的字段)。我在'僞代碼'中做了一些查詢。

問:MySQL中我應該用什麼函數來選擇特定的行?如果它們不存在,如何處理這種情況?

CREATE procedure `proc_table`() 
BEGIN 
    SELECT a.oid as 'oid', 
    a.objet as 'objet', 


-- limited query 
     (select tab2_oid from db.cars where tab1_oid = a.oid LIMIT 1) 
-- limited query 

    FROM db.tab1 as a; 
END$$ 

僞代碼

-- limited query 
     (select tab2_oid as 'first_row' from db.cars where tab1_oid = a.oid where row=1) 
     (select tab2_oid as 'second_row' from db.cars where tab1_oid = a.oid where row=2) 
... 

-- limited query 

回答

1

如何使用工會和LIMIT聲明?

select feld1,feld2 from 
(select feld1,feld2 from table1 where... LIMIT 1,1 
union all 
select feld1,feld2 from table2 where....LIMIT 2,1 
.... 
)a LIMIT 5        
+0

我發現了類似LIMIT1,1的東西 - 這會讓我回到第二排 - 它看起來比聯盟容易安靜 - 您怎麼看? – boski

+1

我的問題是你不使用訂單,因此你有未排序的數據,只想抓住任何行。如果你想指定一行使用order by和fitting where子句,或者如果你只想顯示任何行,使用限制函數(如1,1),但通過沒有訂單的訂單將顯示隨機數據 – GBoehm

+0

我會決定這樣做,謝謝你的幫助 – boski