我有三个查询,它们都从同一个表和相同的WHERE
子句中选择相同的属性,但是每个查询都连接在不同的表上。不幸的是,我无法在该数据库中创建表。
我想要实现的是在结果中显示的三个查询之间没有重叠的结果。换句话说,如果查询1和查询2组合在一起,则只有查询2中在查询1中未返回未返回的那些结果才应组合到输出中。
两个查询的示例:
SELECT UNIQUE C.color
FROM colors C INNER JOIN markers M ON M.color = C.color
WHERE M.color NOT LIKE 'g%'
AND M.hue NOT LIKE 'b%'
ORDER BY C.color ASC; /*this returns 2744 rows in my db*/
SELECT UNIQUE C.color
FROM colors C INNER JOIN pencils P ON P.color = C.color
WHERE P.color NOT LIKE 'g%'
AND P.hue NOT LIKE 'b%'
ORDER BY C.color ASC; /*this returns 4192 rows in my db*/
如果查询1返回:青色,橙色,紫色
查询2返回:金,橙,紫
然后我希望的结果是:青色,金色,橙色,紫色(又名UNIQUE修饰符),而不是:青色,金色,橙色,橙色,紫色,紫色
编辑:有人建议使用 UNION
来合并两者,因为它会返回不同的结果。因此,我进行了必要的语法更改,但结果仅返回了195行。我觉得这很奇怪。我希望至少有2744行(查询1的输出)+从查询2返回的,但不在查询1中的唯一值。
编辑2:没关系UNION
显然起作用了!我在不使用COUNT
的情况下对每个查询执行了DISTINCT
。谢谢回答答案的人。
答案 0 :(得分:0)
为此使用一个简单的联合:
import java.util.Scanner;
public class JavaApplication37 {
public static void main(String[] args) {
Scanner reader = new Scanner(System.in);
System.out.println("What's the interest rate?: ");
int i = reader.nextInt();
double t = (Math.log(2))/(Math.log(1+(i/100)));
System.out.println("It takes " + t + " years before the amount has doubled");
}
}