我想在子查询中使用limit子句。同时,父查询列应该可以在子查询中访问。我正在使用MySQL并想做类似如下:在子查询中使用limit-clause和parent-query-column
select * from users u1 join (SELECT b1.userid from bids b1 where b1.userid=u1.userid limit 0,4) a1
当然,这是无效的,因为b1.authorid不能以这种方式访问。
1)我想申请where子句如此明确以下内容排除后限制结果:
select * from users u1 JOIN (SELECT b1.userid from bids b1 limit 0,4) a1 ON b1.userid=u1.userid
2)以下是不能在MySQL中(限制与支持IN/ANY/EVERY/SOME):
select * from users u1 join bids b2 ON b2.userid IN (SELECT b1.userid from bids b1 where b1.userid=u1.userid limit 0,4)
有没有一种方法可以在MySQL中实现所需的结果?
SQLFiddle链接: SQL query
让我把查询的含义在不同的方式。 假设ANS输出,用户是用户表,BID是查询的竞价table.Representation会是这样的:
USER=table(users);
While(USER has next raw) {
uraw=USER.nextraw;
BID=table(bids);
count=0;
While(BID has next raw) {
braw=BID.nextraw;
if(uraw.author < braw.id) {
if(count>=0) {
ANS.add(fields from uraw,fields from braw);
}
count=count+1;
}
if(count>=4) {
break;
}
}
}
return ANS;
如果你还在挣扎,考虑提供一个sqlfiddle与所需的结果。 – Strawberry
我已经按照建议添加了sqlfiddle。 – user2587716
好。好的,第一件事......没有ORDER BY的限制是毫无意义的。你究竟在努力实现什么,并且 - 请重新阅读我以前的评论! – Strawberry