两个sql查询并集中一个查询的限制
我在尝试合并同一个表的两个sql查询的结果集时遇到问题。calls表中有一个call status列。我希望有一个结果集,其中我希望从同一个表中获得20个状态为Completed的呼叫,以及联系人的所有状态为Planning status的呼叫,称为calls。然后按整个结果集排序通话日期和开始时间。我正在尝试这样做:两个sql查询并集中一个查询的限制,sql,sqlite,Sql,Sqlite,我在尝试合并同一个表的两个sql查询的结果集时遇到问题。calls表中有一个call status列。我希望有一个结果集,其中我希望从同一个表中获得20个状态为Completed的呼叫,以及联系人的所有状态为Planning status的呼叫,称为calls。然后按整个结果集排序通话日期和开始时间。我正在尝试这样做: (SELECT * ' + 'FROM calls ' + 'WHERE primary_contact=' + id + ' ' +
(SELECT * ' +
'FROM calls ' +
'WHERE primary_contact=' + id + ' ' +
'AND callstatus="Planned")' ;
'UNION (SELECT * ' +
'FROM calls ' +
'WHERE primary_contact=' + id + ' ' +
'AND callstatus="Completed"' +
'LIMIT 0,20)' +
'ORDER BY calldate || " " || stime DESC ';
这个问题对我不起作用。谁能帮我一下,告诉我哪里出了问题
提前谢谢 试试这个:
SELECT *
FROM calls
WHERE primary_contact = :id AND
callstatus = 'Planned'
UNION
SELECT *
FROM (
SELECT *
FROM calls
WHERE primary_contact = :id AND
callstatus = 'Completed'
LIMIT 20
)
ORDER BY calldate, stime;
到底是什么不起作用?您是否收到错误消息,或者是否收到错误结果?如果你得到了错误的结果,那么他们怎么会错呢?您得到了什么以及您期望得到什么?'SELECT*FROM SELECT*'+'FROM calls'+'其中primary_contact='+id++'+'和callstatus=planning UNION'+'从calls'+'中选择*'+'其中primary_contact='+id++''和callstatus=Completed'+'限制0,10“+”ORDER BY calldate | | | | | | | stime DESC”感谢您的帮助。但我必须像上面发布的那样进行内部查询。但现在我面临的问题是,限制设置为整个resultset,而不是仅适用于已完成的调用。我试图用括号将其括起来,但这会给出语法问题。你为什么要改变它?我的查询是否给出了错误的结果?您正面临限制的问题,因为限制适用于所有选择,即使是使用UNION连接的选择。看看我的查询-我只对第二个子查询应用限制-它不会影响外部选择。这就是将一个选择封闭为内部选择的全部要点,以使限制仅限于该内部选择。