2012-10-23 96 views
-2

我需要選擇兩個空值之間的行。用於在NULL之間進行選擇的SQL查詢

我的問題是,如何獲得我需要的選定類的名稱和標記。我不能每次都更換表格,因爲表格中的總行數大約是13000.

我認爲它太多了,甚至更多我從excel文件中獲取此表,每次都會發生一些更改(每天兩次,甚至更多更多)。你的意見是什麼?

例如: -

Name  Marks 
================= 
class10 NULL 
rahul  45 
priti  65 
terry  74 
class9  NULL 
Andrew  80 
Nastya  75 
Ajay  81 
class8  NULL! 
+5

我建議你做出更好的表格結構。你可以保留student_marks表有列student_name,class,標記 –

+0

我同意@DhairyaVora,這是一個不好的數據庫設計的例子。你應該改進它。遷移數據也很容易。 –

+0

其實我從excel文件得到這個,它太大了。除chaning表結構外,是否有其他選項?我無法獲得任何其他更改形式的Excel文件。 – Karkool

回答

0

你的表有錯誤的佈局,以滿足您的需求。沒有辦法在SQL中選擇「值之間」的行,只有當你的表有一個額外的索引來定義行的順序時。

正確的表格佈局會是這樣的:

Class  Name  Marks 
class10 rahul  45 
class10 priti  65 
class10 terry  74 
class9  Andrew  80 
class9  Nastya  75 
class9  Ajay  81 
... 

然後,你可以查詢Class10的所有成員是這樣的:

SELECT Name, Marks FROM table WHERE Class = 'class10' 

更妙的是讓自己的表類,但我懷疑你的情況下Excel導入這將是可取的。

希望這會有所幫助。

編輯:然後用索引導入Excel表格,以便它看起來像這樣:

ID Name  Marks 
===================== 
1 class10 NULL 
2 rahul  45 
3 priti  65 
4 terry  74 
5 class9  NULL 
6 Andrew  80 
7 Nastya  75 
8 Ajay  81 
9 class8  NULL! 

然後你可以選擇喜歡你的10類商標:

SELECT Name, Marks FROM table WHERE ID BETWEEN 2 AND 4 

或者類9 like:

SELECT Name, Marks FROM table WHERE ID BETWEEN 6 AND 8 

使用像PHP這樣的腳本語言,您可以在腳本中自動執行此任務。

+0

謝謝@migg和vinod爲您的快速解答,但我不能更改excel文件,這是主要問題,每次更換(每天兩次)這個表,我認爲不是一個好的做法。任何其他選項..... – Karkool

+0

如果您想自動化例如在PHP中,此查詢將選擇所有類的名稱和ID:'SELECT ID,名稱AS類FROM表WHERE標記IS NULL'。這與循環相結合就足以輸出所有學生和標記及其關聯的類。 – migg

+0

再次感謝@ migg.I對於用索引導入excel文件有一些疑問,但是希望我自己應該解決它。如果不是的話,我會再次敲這裏....非常感謝你們的大力支持和快速響應。 – Karkool

-1

通過「在中間空」你的意思是那些沒有空值?

如果是的話,你可以這樣做:

select * from classTable where NOT ISNULL(Marks); 

編輯: 在Excel工作表中的數據格式是非常糟糕的。類名應該是表中的另一列。 現在,如果您連接數據Name:Rahul, Marks:70,該行的任何部分都不會指示學生所在的班級。您完全依賴數據順序來確定班級 - 此設計非常不可靠。

所以我的建議是在Excel表中包含另一列,因此在MySql表中。

+0

謝謝你的回覆@vinod – Karkool

0

,如果你的意思是你想不空的記錄,然後使用 -

select * from table_name where marks is not null 
+0

你是@parag。但我需要每個班級的姓名和標記不全部在同一時間.. – Karkool

相關問題