我的查询有问题,我不知道该怎么办。这是我的查询。我错了。
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
错误:
[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
答案 0 :(得分:5)
错误消息非常明显。您的一个子选择是返回多个行,并且数据库不知道如何处理它。我猜你的数据库是Linux / Unix / Windows上的DB2,基于错误信息,所以这里是你错误的Info Center article。
答案 1 :(得分:0)
也许您的一个表中有重复的数据,请确保已检查它。我也有同样的问题,它是由重复的行引起的,它使子查询返回的行多于一个。
答案 2 :(得分:0)
简而言之,这是由于您使用的是“ =”,但子选择语句返回的行重复。
假设您有一个简单的表: 创建表T1(ID int不为空的主键,FID int);
如果FID列多次引用相同的ID值,则以下语句可能返回SQL0811N。
db2“从T1中选择ID,其中ID =(从T1中选择fid)”
SQL0811N标量全查询,SELECT INTO语句或VALUES的结果 INTO语句不止一行。 SQLSTATE = 21000
以下语句将成功运行: db2“从T1中选择ID,其中ID IN(从T1中选择fid)”