对SQL查询的疑惑

[复制链接]
查看11 | 回复9 | 2005-10-30 17:05:33 | 显示全部楼层 |阅读模式
我是新手,请大家多多关照
我说明一下我得问题
假设一个SQL2000的数据库company中有1000个表,都是记录用户信息的
为:user040101,user0400102.................
我现在需要从这1000个表中查询姓王的客户
我从前2个里查询
select * from user user040101,user0400102 wherename like '王%'
这样做的后果:
服务器: 消息 209,级别 16,状态 1,行 1
列名 'name 不明确。

select * from * where like '王%'
这个语句又是错误的
应该怎么做呢?
回复

使用道具 举报

千问 | 2005-10-30 17:05:33 | 显示全部楼层
user user040101,user0400102这里是多个表,你需要用表名限定name
回复

使用道具 举报

千问 | 2005-10-30 17:05:33 | 显示全部楼层
user040101,user0400102..........
这一共是1000多个表,这1000个表采用的都是相同的字段
有没有特别简练的语句可以一次完成查询,并且查询结果都在一个表内显示?
回复

使用道具 举报

千问 | 2005-10-30 17:05:33 | 显示全部楼层
沒辦法簡單,最簡單也要寫個過程然后用臨時表.
單獨對每個表查詢寫入到temp_table.
然后從temp_table中select出來.
回复

使用道具 举报

千问 | 2005-10-30 17:05:33 | 显示全部楼层
谢谢楼上的
可是我连什么叫过程都不知啊
不过总算有点思路了
抓紧时间学。。。。
回复

使用道具 举报

千问 | 2005-10-30 17:05:33 | 显示全部楼层
DECLARE @tbl nvarchar(128)
DECLARE @sql nvarchar(128)
SET NOCOUNT ON
--生成与用户信息表结构相同的表
SELECT * INTO #TEMP FROM user040101 WHERE 1=2
DECLARE cur_tbl cursor local for
SELECT 'insert into #TEMP SELECT * FROM '+NAME+' WHERE NAME LIKE ''王%''' FROM SYSOBJECTS WHERE XTYPE='U' and name like 'USER04%'
OPEN cur_tbl
FETCH NEXT FROM cur_tbl INTO @sql
WHILE @@fetch_status =0
BEGIN
EXEC(@sql)
FETCH NEXT FROM cur_tbl INTO @sql
END
CLOSE cur_tbl
DEALLOCATE cur_tbl
SELECT * FROM #TEMP
DROP TABLE #TEMP
回复

使用道具 举报

千问 | 2005-10-30 17:05:33 | 显示全部楼层
楼上的pydwh真牛啊
非常感谢。
回复

使用道具 举报

千问 | 2005-10-30 17:05:33 | 显示全部楼层
还是在UNIX下用Sybase方便,语法和SQL2000很象,但是用shell脚本嵌套一个SQL语句就搞定了
回复

使用道具 举报

千问 | 2005-10-30 17:05:33 | 显示全部楼层
话虽那么说,可是我碰到了windows下的SQL SERVER了,能有什么好的办法吗?
pydwh的方法我试过了,同样存在问题,不能实现我所希望的
Sybase和SQL2000毕竟同源同祖,难道真的没有办法吗?
回复

使用道具 举报

千问 | 2005-10-30 17:05:33 | 显示全部楼层
急需高手指点
请大家帮忙
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

主题

0

回帖

4882万

积分

论坛元老

Rank: 8Rank: 8

积分
48824836
热门排行