[英]SQL THREE TABLE QUERY FORMATION
I have 3 tables 我有3张桌子
table a table b table c
+--------+ ---------+------- ------+-------+
| ID | ID | STATUS| ID | STATUS|
+--------+ ---------+-------- -----+--------+
| 1 | 4 | A | 6 | A
| 2 | 5 | NULL | 5 |NULL
| 3 | 1 | A | 3 | A
| 9 | 2 | NULL | 1 | NULL
Now I want a record from TABLE B and C which matches TABLE A ID 现在我想要表B和C中与表A ID匹配的记录
I wrote an query 我写了一个查询
SELECT DISTINCT ID
FROM
(SELECT a.ID,b.STATUS FROM A a B b where a.ID=b.ID
UNION
SELECT a.ID,C.STATUS
FROM A a,C C
WHERE a.ID=C.ID) as T
it returns 3 records 它返回3条记录
but when I append where condition T.STATUS='A' 但是当我附加条件T.STATUS ='A'时
SELECT DISTINCT ID
FROM
(SELECT a.ID,b.STATUS FROM A a B b
WHERE a.ID=b.ID
UNION
SELECT a.ID,C.STATUS
FROM A a,C C
WHERE a.ID=C.ID) as T
WHERE T.STATUS='A'
it returns 2 records 它返回2条记录
again I changed WHERE condition as T.STATUS is null 我再次更改了WHERE条件,因为T.STATUS为null
SELECT DISTINCT ID FROM
(SELECT a.ID,b.STATUS
FROM A a,B b
WHERE a.ID=b.ID
UNION
SELECT a.ID,C.STATUS
FROM A a,C C
WHERE a.ID=C.ID) as T
WHERE T.STATUS is null
it returns 2 records 它返回2条记录
totally 4 RECORDS but my first query without where condition it returns 3 总共4个记录,但我的第一个查询没有条件返回3
How this mismatch? 这种不匹配如何? I know its my query problem but
我知道它是我的查询问题,但是
I want to apply my where condition to only 3 records(query without where condition returns result). 我想将我的where条件仅应用于3条记录(没有where条件返回结果的查询)。
You are selecting distinct id
. 您正在选择
distinct id
。 id = 1
has rows with both 'A' and NULL
. id = 1
行同时具有'A'和NULL
。 The results make sense. 结果很有意义。
I would write the query as: 我将查询写为:
SELECT DISTINCT ID
FROM (SELECT a.ID, b.STATUS
FROM A a JOIN
B b
ON a.ID=b.ID
UNION
SELECT a.ID, C.STATUS
FROM A a JOIN
C C
WHERE a.ID = C.ID
) T
Note that your original query had at least one syntax error. 请注意,您的原始查询至少有一个语法错误。 You should learn proper explicit
join
syntax. 您应该学习正确的显式
join
语法。 Simple rule: Never use commas in the from
clause. 简单规则:请勿在
from
子句中使用逗号。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.