当前位置:首页 » 编程语言 » sql一个字段多条记录
扩展阅读
webinf下怎么引入js 2023-08-31 21:54:13
堡垒机怎么打开web 2023-08-31 21:54:11

sql一个字段多条记录

发布时间: 2022-07-28 06:16:17

① 如何使用一条sql语句,插入多条记录

无可能 除非写存储过程 做一个循环 这个 你要想一下 你用的应该是关系型数据库吧 那么关系型数据库就必须要求表里面有主键约束以保证每条记录不会重复 当然也有些表是没主键的 这样的设计我觉得不能纳入讨论范围 然后"一个查询语句插入多条记录" 这个命题得出一个推论 就是你不能设变量 就算可以设变量 但是只有一条语句 变量还是不能赋不同的值 那么得出你插入的多条数据都是重复的 这就违反了主键约束 也违反了第一范式的要求了。。。我觉得三大范式 你可以不用太苛刻的遵守 但是第一范式我认为是底线了 因为如果连第一范式都不遵守的话 那么就已经颠覆了关系型数据库的数学模型了。。。
其实这个问题我曾经也考虑过 因此看些书 结合平时的工作 最后就是按照上面这样说服了自己。。。。

② sql如何将一条记录查成多条

可以,有2中实现方案。
1。select*from(select字段frombiaoaa),(selectcount(*)frombiaoab)
这个写法有一个缺点,就是第二列的内容都一样,也有很多行。
1。select*from(selectrownumar,字段frombiaoa),(selectrownumbr,count1from(selectcount(*)count1frombiaob))wherea.ar=b.br(+)
构建一个行号字段,用这个字段进行关联。并且保留前面表格的所有行。

③ MYSQL 语句如何拆分一个字段为多条记录

举例:

原始SQL:


SELECTPROVINCE_CODE,CITY_CODE,ZONE_CODEFROMCIV_P_CUST

原始结果:

④ sql 一个字段有多条数据 在一行显示

方法一:直接构造(这种方法针对这样的问题比较好,但实用性不大)
DECLARE@resultVARCHAR(1024)
SET@result=''
select@result+=b.f_measure+','fromt_quality_qi_specialt,t_quality_qi_measurebwheret.f_id=b.f_special_snandt.f_id=4andb.f_is_active=1
set@result=substring(@result,1,len(@result)-1)
SELECT@result
方法二:游标遍历(这种方法可适用性比较强,但是看起来比较麻烦)
declare@resultvarchar(1024)='',@lsf_measurevarchar(1024)
declarecursor_testcursorforselectb.f_measure
fromt_quality_qi_specialt,t_quality_qi_measureb
wheret.f_id=b.f_special_snandt.f_id=4andb.f_is_active=1
opencursor_test
fetchnextfromcursor_testinto@lsf_measure
while@@fetch_status=0
begin
iflen(@result)>=1
set@result=@result+','+@lsf_measure
iflen(@result)<1
set@result=@lsf_measure
fetchnextfromcursor_testinto@lsf_measure
end
closecursor_test
deallocatecursor_test
select@result

⑤ SQL语句,取某条字段有多个值的记录

SELECT *
from T1 t WHERE EXISTS (SELECT 1 FROM T1 where id = t.id and name = t.name and age <> t.age)

⑥ 如何一次插入多条记录的SQL语句

在使用SQL数据库的时候,我们也许会需要一次像数据库中添加多条记录,那么我们可以使用SQL语句来实现,该语句具体如下:
--添加一条记录
INSERT INTO tableName(col1,col2,col3) VALUES (1,2,3)

--添加多条记录
INSERT INTO tableName(col1,col2,col3)
SELECT 3,4,5
UNION ALL
SELECT 6,7,8

--从另外的一张表中读取多条数据添加到新表中
INSERT INTO tableName(col1,col2,col3)
SELECT a,b,c FROM tableA

--从其他的多张表中读取数据添加到新表中
INSERT INTO tableName(col1,col2,col3)
SELECT a,b,c FROM tableA WHERE a=1
UNION ALL
SELECT a,b,c FROM tableB WHERE a=2
上边代码中的into都可以省略!
上边代码中的union all如果换成union,则相同记录只插入一次,不会重复插入。
另外一种方法是SQL Server2008特有的,所以,如果你不是SQL Server2008,就不能使用这种方法了。
INSERT INTO MyTable(ID,NAME)VALUES(7,'003'),(8,'004'),(9,'005')
create table [TEST]
(
[NUM_ID] int primary key
)
go
declare @temp int
set @temp=1;
while @temp<=1000000
begin
insert into [TEST]([NUM_ID]) values(@temp)
set @temp=@temp+1;
end
go
----------------------------------------------------------
--试试下面的方法
--2005
DECLARE @n AS BIGINT;
SET @n = 1000000;
WITH Base AS
(
SELECT 1 AS n
UNION ALL
SELECT n + 1 FROM Base WHERE n < CEILING(SQRT(@n))
),
Expand AS
(
SELECT 1 AS c
FROM Base AS B1, Base AS B2
),
Nums AS
(
SELECT ROW_NUMBER() OVER(ORDER BY c) AS n
FROM Expand
)
SELECT n FROM Nums WHERE n <= @n
OPTION(MAXRECURSION 0);
--2
CREATE FUNCTION dbo.fn_nums(@n AS BIGINT) RETURNS TABLE
AS
RETURN
WITH
L0 AS(SELECT 1 AS c UNION ALL SELECT 1),
L1 AS(SELECT 1 AS c FROM L0 AS A, L0 AS B),
L2 AS(SELECT 1 AS c FROM L1 AS A, L1 AS B),
L3 AS(SELECT 1 AS c FROM L2 AS A, L2 AS B),
L4 AS(SELECT 1 AS c FROM L3 AS A, L3 AS B),
L5 AS(SELECT 1 AS c FROM L4 AS A, L4 AS B),
Nums AS(SELECT ROW_NUMBER() OVER(ORDER BY c) AS n FROM L5)
SELECT n FROM Nums WHERE n <= @n;
GO
--2000 这个会比前两个慢,但是前两个2000不能用
CREATE TABLE dbo.Nums(n INT NOT NULL PRIMARY KEY);
DECLARE @max AS INT, @rc AS INT;
SET @max = 1000000;
SET @rc = 1;
INSERT INTO Nums VALUES(1);
WHILE @rc * 2 <= @max
BEGIN
INSERT INTO dbo.Nums SELECT n + @rc FROM dbo.Nums;
SET @rc = @rc * 2;
END
INSERT INTO dbo.Nums
SELECT n + @rc FROM dbo.Nums WHERE n + @rc <= @max;
--------------------------------------------------------------------------------------------------------

⑦ java SQL 数据库 一个字段有多条不同的数据如何查找

可以用java.util.* 中的 List<Object>接收。循环显示出来。

这里有jdbc的例子:http://www.cnblogs.com/bluedream2009/archive/2009/10/23/1588401.html

⑧ C# 执行一次SQL语句,搜索同一字段的多条记录

select * from table where id in (2,3,4) 纯粹条件的事情。如果ID是int,可以
select * from table where id between 2 and 4

⑨ sql 如何将一条记录查成多条

sqlserver写法

创建测试表

createtablet
(col1varchar(10),
col2numeric(10,1),
col3varchar(10),
col4int)

insertintotvalues('山东',0.8,'全部',7)

执行

selectt.*fromt,
(selectnumberfrommaster..spt_valueswherenumberbetween1and(selectmax(col4)fromt)andtype='P')t2

结果


其他数据库可能写法不同