日期:2014-05-17  浏览次数:20805 次

这里提示LOG列名无效,怎么回事呢?
本帖最后由 lanfengye 于 2012-12-05 12:10:10 编辑
select * from g_trade_tradelist 
Where TradeID in (select tradeid,count(*) as log from g_trade_goodslist 
where tradeid in (select tradeid from g_trade_tradelist 
where tradestatus=5 and printexpress='')  and log>1)

------最佳解决方案--------------------
是的,因为那个是一个数据集,编译器无法得知它的名字。所以要加
------其他解决方案--------------------
因为select是在where之后,你在where的时候都还没产生别名,所以会报错,然后,log是关键字,最好要用中括号包住

select * from g_trade_tradelist  
Where TradeID in (select tradeid,count(*) as [log] from g_trade_goodslist  
where tradeid in (select tradeid from g_trade_tradelist  
where tradestatus=5 and printexpress='')  
group by tradeid 
having count(*)>1
)

------其他解决方案--------------------
引用:
因为select是在where之后,你在where的时候都还没产生别名,所以会报错,然后,log是关键字,最好要用中括号包住

SQL code?1234567select * from g_trade_tradelist  Where TradeID in (select tradeid,count(*) as [log] from g_trade_goodslis……
谢谢,不过你的语句不通哦.
显示'当没有用 EXISTS 引入子查询时,在选择列表中只能指定一个表达式。'
------其他解决方案--------------------
select * from g_trade_tradelist   
Where TradeID in (select tradeid from g_trade_goodslist   
where tradeid in (select tradeid from g_trade_tradelist   
where tradestatus=5 and printexpress='')   
group by tradeid  
having count(*)>1 
)

------其他解决方案--------------------
引用:
SQL code?1234567select * from g_trade_tradelist   Where TradeID in (select tradeid from g_trade_goodslist   where tradeid in (select tradeid from g_trade_tradelist   where tradestatus=5 a……
谢谢,我刚才自己改了一下用下面的

select * from g_trade_tradelist 
where tradeid in(select tradeid from (
select tradeid,count(*) as x from g_trade_goodslist 
where tradeid in(select tradeid from g_trade_tradelist 
where tradestatus=5 and printexpress='')
group by tradeid)a where x>1)

最后面第二个括号)后是不是一定要加一个别名呢?好像不加就错了.
------其他解决方案--------------------
引用:
是的,因为那个是一个数据集,编译器无法得知它的名字。所以要加

是个数据集?怎么说的呢?我一开始以为所有的子查询都需要这样,但事实跟我想的又不一样,有的在后面这样子加上去就出错了,两者我也区别不出来,求指教
------其他解决方案--------------------
子查询分为关联子查询和非关联子查询,关联的话就是两表需要有字段连接,比如exsits,非关联的话一般就是in的那种。帮你格式化了一下代码,在from里面,如果你不加别名,数据库不知道这个怎么用,这个表达水平有限,你慢慢去体会吧:

SELECT  *
 FROM    g_trade_tradelist
 WHERE   tradeid IN (