在再选择中你可以使用在From Table区中未列出的表.但是你必须把这些表列在你的再选择的From子句中(如前面例子所示那样)。
当再选择带有关键字”any”或”all”时,再选择必须并且只能返回一个列。下面的句例是无效的,因为它试图返回两个列(State_name 和Pop_1990):
Any(Select state_name,pop_1990 from state)
当再选择不带”any”、“all”或“in”时,再选择必须准确返回一个行的值。下面的例子是无效的,因为再选择返回了一组行:
obj within(Select obj from state where Pop_1990>2000000)
当再选择不用”any”、“all”或“in”时,你不能在再选择中使用Group by Columns子句。
你不能有嵌套的再选择,即是说,每个Select语句你只能有一个再选择。
设置过滤标准
一个过滤标准是一个逻辑表达式,它通常把一个列值与某个另外的值作比较。例如,以下的过滤标准用大于操作符(>)测试订单金额列是否有大于100的值。
Where Condition:Order_Amount>100
如果一个查询包含了上面这个Where Condition子句,MapInfo就只选择那些订单金额值大于100的行。
Where Condition区可以包含两个或更多的逻辑表达式,但这些表达式必须被词“And”或“Or”隔开。如果表达式是用词And连接,MapInfo仅选择那些两个标准满足的行。如果表达式是用Or连接,MapInfo就选择满足其中任何一个标准的行。
过滤标准可用于你的基础表的任何一个列,不管你是否在Select Columns区中包括了这个列。
列可以用列名或列号来引用,列号指明是在Select Columns中已有的列的顺序。
因此,“Col”和“col6”分别指第一和第六列,号之前必须有字母“Col”。
用SQL Select对话框的Where Condition区的基本目的可能是两个:行过滤和关联。Where condition区服务于多个目的。在某些场合下,你可能要用一个Where condition表达式来过滤你的表,以便你只看到满足一定标准的那些列。在一些场合下,你要利用Where condition区来指定一种关联,以便你的查询能够包括来自两个或更多个表中的列。
注意:你不可以在Where condition区中使用集合函数(apgregate function)。
Order by Columns(按列排序)区
选择升序和降序
默认,MapInfo是用升序排序一个表。如果你要用一个字符型字段进行排序,升序意味着A出现在B之上,如此类推。如果你对一个数字型字段进行排序,小的数值出现在大的数值之上。
为了以降序排序,以便大的数出现在小的数之上,要在Order By Columns区中的列名之后放一个词desc。例如,你查询World表,用如下的方式:
Order By Columns:Population desc
是用Population对这个表排序,降序。
当MapInfo执行多级排序时,各级排序有其自己的升/降序设置。这样,下面的例子按State列执行升序,然后按Population列执行降序:
Select Columns: *
From Table: City_1K
Order By Columns: State,Population desc
在Order By Columns区中的列名句法:
在这个区,你有两种方法输入一个列名:
输入列的名字(例如前例中的列名state)
输入列号,这里的1代表排列在Select Columns区中的第一列,在数字之前不要打入“Col”。
如果你要用一个导出列进行排序并且这个导出列有一个别名的话,你可以在Order By Columns区输入这个别名。如果导出列没有别名,就输入列号(例如1)。
用Order By Columns字段对结果表排序
在SQL Select对话框中,利用Order By Columns区,允许你对结果表的行进行排序。排序影响到出现在Browser窗口中和各个行从顶到底出现的顺序。如果你打算把Brow