Sql 标量fullselect、SELECT INTO语句或VALUES INTO语句的结果不止一行

Sql 标量fullselect、SELECT INTO语句或VALUES INTO语句的结果不止一行,sql,db2,driver,command-line-interface,Sql,Db2,Driver,Command Line Interface,我对我的查询有一个问题,我不知道该怎么办。这是我的查询和错误 select prd.product_id,prd.prd_name ,prd.prd_longname ,prd.prd_brand ,prd.prd_picture ,prd.market_comment ,prd.categ ,prd.status_id ,prd.status ,prd.active_stock ,prd.slot_date ,prd.currency ,prd.selling_price ,prd.old_p

我对我的查询有一个问题,我不知道该怎么办。这是我的查询和错误

select prd.product_id,prd.prd_name ,prd.prd_longname ,prd.prd_brand ,prd.prd_picture ,prd.market_comment ,prd.categ ,prd.status_id ,prd.status ,prd.active_stock ,prd.slot_date ,prd.currency ,prd.selling_price ,prd.old_price ,prd.type_of_sell ,prd.catalog_id ,prd.catalog_name ,prd.demo ,prd.demo_id, 
    (select coalesce(count(prd_attribute_id),0) from PRD_ATTRIBUTE where status_id = 1 and product_id = prd.product_id and batch_code <> '0000') as ATTR_CNT  ,
    (select prd_attribute_id from PRD_ATTRIBUTE where product_id = prd.product_id and batch_code = '0000' and status_id = 1),
    (select categ_url from DBNAME.PRD_CATEGORY 
where parameter_id = prd.categ_id)||'/'||    (select prd_url from DBNAME.PRODUCT_URL where product_id = prd.product_id) as CATEG_URL 
from TEMP_WEB_PRD prd 
order by slotdate desc
fetch first 12 rows only

这个错误消息是不言自明的。您的一个子选择返回了多行,而数据库不知道如何处理。根据错误消息,我猜您的数据库是Linux/Unix/Windows上的DB2,下面是关于您的错误的详细信息。

错误消息是不言自明的。您的一个子选择返回了多行,而数据库不知道如何处理。根据错误消息,我猜您的数据库是Linux/Unix/Windows上的DB2,下面是关于您的错误的说明。

可能您的某个表有重复数据,请确保您已检查它。我也有同样的问题,它是由重复的行引起的,它使子查询返回多行。

可能您的一个表有重复的数据,请确保您已经检查了它。我也有同样的问题,它是由重复的行引起的,它使子查询返回多行。

是的,简而言之,这是因为您使用了=但子选择语句返回了重复的行

假设您有一个简单的表: 创建表T1 ID int not null主键FID int

如果FID列多次引用相同的ID值,则以下语句可能返回SQL0811N

db2从T1中选择id,其中id=从T1中选择fid

身份证件 SQL0811N标量fullselect、SELECT INTO语句或值的结果 INTO语句不止一行。SQLSTATE=21000

以下语句将成功运行:
db2 select id from T1,其中select fid from T1中的id是简而言之,这是因为您使用了=但从sub select语句返回了重复的行

假设您有一个简单的表: 创建表T1 ID int not null主键FID int

如果FID列多次引用相同的ID值,则以下语句可能返回SQL0811N

db2从T1中选择id,其中id=从T1中选择fid

身份证件 SQL0811N标量fullselect、SELECT INTO语句或值的结果 INTO语句不止一行。SQLSTATE=21000

以下语句将成功运行: db2从T1选择id,其中从T1选择fid中的id

 [IBM][CLI Driver][DB2/AIX64] SQL0811N  The result of a scalar fullselect, SELECT INTO    statement, or VALUES INTO statement is more than one row.  SQLSTATE=21000