SQL按列过滤的问题(50分)

  • 主题发起人 主题发起人 autumn
  • 开始时间 开始时间
A

autumn

Unregistered / Unconfirmed
GUEST, unregistred user!
通常SQL是按行过滤的,如下:
select *
from aaa
where field1=
(select filter
from bbb
where field2='ccc'
)

可以按列过滤吗?想进行的形式大约如下
select aaa
from table1
in
(select aaa,bbb
from table1
)

Microsoft SQL可以通过临时表操作://这是我在sql7的笨用法
select field1,field2 into #TempTable from Table1
就可以当一般的表用
select field1 from #TempTable

不知到有否这样的通用的功能?具体语法如何?
 
可以, 但是有必要么? 既然是按列过滤, 那为什么不直接用

select field1, field2 from aaa where ...
或者 select field1 from aaa where field2=bbb之类的呢?

肯定可以代替的.

 
不是很明白,是不是这样:
select aaa
from table1
where aaa in (select aaa from table1)

 
我的意思是我在Form1上放了一个TQuery1,生成了大概如下的SQL

select *
from aaa,bbb
where aaa.field1=bbb.field2

我又在另一个Query中要用Query1这个视图,该如何引用Query1
select * from Query1
肯定不行的,不知要怎么操作?
 
还是不懂,select ... from ...,应该只能 from 表名吧。

(挠头)是不是你想select from 的表是动态的,或者说该表名是另一个表中的字段?根据不同的情形 from 不同的表?
 
对不起,忘了回车了。建议学一下CSDN的方法,不用<pre>。
(噓!他们也是我支的招!嘻嘻!)
 
AGUI:
不是表名,是一个临时的视图。
 
可以. 不必使用view
如果你的目的是select aaa from query2 , 那么BDE提供这个功能.
将产生query2的sql语句保存于一个后缀名为.sql的文件中(query2.sql.savetofile可以搞定).
然后select aaa from "xxx.sql"即可.
 
Another_eYes:
好象不行,select field1 from aaa.sql时他说我
invalid object name "aaa.sql"
不知道那里出了问题?
 
to autumn:
你是不是没有指定路径名.

如果使用Oracle,就可以使用Select aliasTable.* from (Select * from table1) aliasTable
也就是说,你程序可以这样写:
Query2.SQL.Text:='Select * from ('+Query1.SQL.Text+')';

//不过我现在没有环境测试.抱歉.
 
沈前卫说得对。
 
我写了路径了。
 
什么数据库?
 
多人接受答案了。
 
后退
顶部