我需要测试我的邮件服务器。我怎样才能做一个Select语句 选择说ID = 5469一千次。制作SQL多次选择同一行
回答
:
print 'wow'
go 5
输出:
Beginning execution loop
wow
wow
wow
wow
wow
Batch execution completed 5 times.
这会给出1000行的结果集吗? – spender 2010-03-18 19:20:56
@spender,你想看1000次样品输出吗?或者是5够了?如果你看不到5次,样本输出有5次,那么你需要很多帮助。 Op从来没有说他们想要一个具有1000行的结果集,OP说他们正在测试,并且需要一个Select语句来选择1000个行,ID = 5469.一个1000行的选择与单个选择1000的测试是完全不同的倍。 – 2010-03-18 19:26:51
我只是怀疑这不是OP问的问题。据我所知,他们希望结果集与1000x相同的行。打印一个值x次是不等价的。我看到我们对所问的内容有不同的解释,就这些。 – spender 2010-03-18 19:31:43
如果您在SQL Server这样
declare @cnt int
set @cnt = 0
while @cnt < 1000
begin
select '12345'
set @cnt = @cnt + 1
end
select '12345'
可以是任意表达式
你可以使用UNION ALL语句。
试着这么做:
SELECT * FROM tablename WHERE ID = 5469
UNION ALL
SELECT * FROM tablename WHERE ID = 5469
你不得不重复SELECT语句一堆次,但你可以写一个位的VB代码在Access创建一个动态的SQL语句,然后执行它。不漂亮,但它应该工作。
哇! 'UNION ALL'x1000 - 怀疑Access可以处理这样的查询=) – incarnate 2010-03-18 19:54:15
如果我明白你的意思,然后一个非常简单的方法就是交叉上与它1000个多行的表派生查询加入,并把顶部1000上。这会重复您的结果1000次。
编辑:作为一个例子(这是MSSQL,我不知道,如果访问是非常不同的)
SELECT
MyTable.*
FROM
MyTable
CROSS JOIN
(
SELECT TOP 1000
*
FROM
sysobjects
) [BigTable]
WHERE
MyTable.ID = 1234
我们可以设置一个变量而不是设置一个确切的数字吗?例如'...从...选择顶部@i'因为我有一个查询有一个名为'number'的列,我想在'number'列时间中重复该行。例如,如果我有一个其编号列为2的行,那么它会重复该列两次,并继续为所有行执行此操作。 – Hamed 2016-09-18 05:24:48
为此,创建一个辅助表:
JUST_NUMBER(NUM INT primary key)
插入(与帮助的一些(VB)脚本)编号从1到N.然后执行该未连接的查询:
SELECT MYTABLE.*
FROM MYTABLE,
JUST_NUMBER
WHERE MYTABLE.ID = 5469
AND JUST_NUMBER.NUM <= 1000
下面是一个使用递归公用表表达式生成一些空行的方式,那么过加入他们返回到您所需的行:你的真正的表
declare @myData table (val int) ;
insert @myData values (666),(888),(777) --some dummy data
;with cte as
(
select 100 as a
union all
select a-1 from cte where a>0
--generate 100 rows, the max recursion depth
)
,someRows as
(
select top 1000 0 a from cte,cte x1,cte x2
--xjoin the hundred rows a few times
--to generate 1030301 rows, then select top n rows
)
select m.* from @myData m,someRows where m.val=666
替代@myData
,并改变最终谓词来适应。
最简单的方法是创建一个表,1000行。我们称之为BigTable
。然后,你会查询你想要的数据,并与大表连接,就像这样:
SELECT MyTable.*
FROM MyTable, BigTable
WHERE MyTable.ID = 5469
创建表#TMP1(ID INT,FLD VARCHAR(MAX)) INSERT INTO#TMP1(ID,FLD ) 值(1, '你好!'),(2, '世界'),(3, '愉快的一天!')
SELECT * FROM#TMP1 去
SELECT * FROM#TMP1哪里ID = 3 去1000
DROP TABLE#TMP1
简单的方法...
这个只存在一个一行到DB
sku = 52 , description = Skullcandy Inkd Green ,price = 50,00
尝试涉及在没有约束键到主表
原始查询
SELECT Prod_SKU , Prod_Descr , Prod_Price FROM dbo.TB_Prod WHERE Prod_SKU = N'52'
该功能查询其他表...添加一个名为'dbo.TB_Labels'的无关表格
SELECT TOP ('times') Prod_SKU , Prod_Descr , Prod_Price FROM dbo.TB_Prod,dbo.TB_Labels WHERE Prod_SKU = N'52'
在postgres中有一个很好的函数叫做generate_series。
select information from test_table, generate_series(1, 1000) where id = 5469
这样,执行查询1000次:那么PostgreSQL的,因为它是那么简单。
对于PostgreSQL例子:
CREATE EXTENSION IF NOT EXISTS "uuid-ossp"; --To be able to use function uuid_generate_v4()
--Create a test table
create table test_table (
id serial not null,
uid UUID NOT NULL,
CONSTRAINT uid_pk PRIMARY KEY(id));
-- Insert 10000 rows
insert into test_table (uid)
select uuid_generate_v4() from generate_series(1, 10000);
-- Read the data from id=5469 one thousand times
select id, uid, uuid_generate_v4() from test_table, generate_series(1, 1000) where id = 5469;
正如你可以在下面的结果看,从UID读取数据1000倍,在每一个新行通过一个新的UUID的产生证实。
id |uid |uuid_generate_v4
----------------------------------------------------------------------------------------
5469|"10791df5-ab72-43b6-b0a5-6b128518e5ee"|"5630cd0d-ee47-4d92-9ee3-b373ec04756f"
5469|"10791df5-ab72-43b6-b0a5-6b128518e5ee"|"ed44b9cb-c57f-4a5b-ac9a-55bd57459c02"
5469|"10791df5-ab72-43b6-b0a5-6b128518e5ee"|"3428b3e3-3bb2-4e41-b2ca-baa3243024d9"
5469|"10791df5-ab72-43b6-b0a5-6b128518e5ee"|"7c8faf33-b30c-4bfa-96c8-1313a4f6ce7c"
5469|"10791df5-ab72-43b6-b0a5-6b128518e5ee"|"b589fd8a-fec2-4971-95e1-283a31443d73"
5469|"10791df5-ab72-43b6-b0a5-6b128518e5ee"|"8b9ab121-caa4-4015-83f5-0c2911a58640"
5469|"10791df5-ab72-43b6-b0a5-6b128518e5ee"|"7ef63128-b17c-4188-8056-c99035e16c11"
5469|"10791df5-ab72-43b6-b0a5-6b128518e5ee"|"5bdc7425-e14c-4c85-a25e-d99b27ae8b9f"
5469|"10791df5-ab72-43b6-b0a5-6b128518e5ee"|"9bbd260b-8b83-4fa5-9104-6fc3495f68f3"
5469|"10791df5-ab72-43b6-b0a5-6b128518e5ee"|"c1f759e1-c673-41ef-b009-51fed587353c"
5469|"10791df5-ab72-43b6-b0a5-6b128518e5ee"|"4a70bf2b-ddf5-4c42-9789-5e48e2aec441"
当然其他的DB不一定具有相同的功能,但它可以做:
见here和
- 1. SQL选择同一行(量)次
- 2. 与同一列SQL选择多行值
- 3. SQL选择多个不同的列行作为一列
- 4. SQL - 如何一次选择一行?
- 5. didSelectRowAtIndexPath一次选择多个行
- 6. 多表,多行SQL选择
- 7. SQL与多个行选择一个ID
- 8. sql选择多行到一列
- 9. Ingres SQL选择多行为一列
- 10. 从同一行中选择多个值?
- 11. SQL - 如何选择多行
- 12. 运行一次选择
- 13. 如何在另一次选择中多次重复选择时进行优化?
- 14. 多次选择相同的列
- 15. 选择相同的功能,多次
- 16. SQL选择出现x次值的行
- 17. 同一行返回多次
- 18. Oracle SQL从十万行中一次选择1000行
- 19. SQL只选择第一行
- 20. 多次复制一行
- 21. SQL Server:在同一个.SQL文件中运行多个选择查询
- 22. SQL计数多行出现次数不同,按多行不同
- 23. 选择SQL查询连接在同一个表两次
- 24. ORACLE SQL在同一语句中选择列两次
- 25. 从成多个变量的Oracle SQL同一列的不同行中选择值
- 26. 选择与在同一行
- 27. 选择所有出现多次的行
- 28. MySQL:选择出现多次的行
- 29. SQL选择不在同一行汇总行中选择其他列的值
- 30. 如何选择文件中出现多次的相同行数?
什么是数据库供应商? – 2010-03-18 19:15:26
MS Access ...使用System.OleDb :) – 2010-03-18 19:17:43
您可以使用Excel创建查询吗?你想建立1次查询还是需要VBA Subroutine或函数? – THEn 2010-03-18 20:59:42