2012-10-23 38 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

相关问题