select * from (
select count(*) as cnt ,all columns
(
select distinct * from table1
union all
select distinct * from table2
)
group by all columns
) where cnt =1
想把在在 db2 中,要想知道在 table1 而不再 table2 中的数据,可以 select * from table1 except select * from table2 可是现在在 mysql 下面 except 没有,用这个 select * from (
select count(*) as cnt ,all columns
(
select distinct * from table1
union all
select distinct * from table2
)
group by all columns
) where cnt =1
一直报错,也没查到 all columns 的用法。
1
b821025551b 2018-03-29 15:08:53 +08:00
用 table1 left join table2 就行了。
|
2
jahan OP |
3
jahan OP @b821025551b 这 2 表没有 pk,只是一堆字符串和数字。让我 on 的无从下手
|
4
b821025551b 2018-03-29 15:22:30 +08:00
test1:
id | value 1 |A 2 |B 3 |C test2: id | value 1 |A 2 |B 3 |D select test1.* from test1 left join test2 on test1.value=test2.value where test2.value is null result: id | value 3 |C 和 pk 没关系吧,on 在你要比对的字段上并且 where 限定右表那个字段是 null 就可以了。 |
5
jahan OP 那要全字段比较了,我试试
|
6
jahan OP select * from (
select count(*) as cnt ,id,value ( select distinct * from table1 union all select distinct * from table2 ) group by id,value ) where cnt =1 这种就一直报错,想不出哪里有问题 |
8
jahan OP |
9
wqzjk393 2018-03-29 20:25:54 +08:00 via iPhone
from
( select distinct * from table1 a union all select distinct * from table2 b ) 这里,应该是把 union 当成子查询的表了,而根据规定所有子查询的表都要有别名。 另外一点,能不用*查询就别用*,经常出一些奇奇怪怪的错误,而且在工程上基本上老大都不允许这么查 |
10
choulinlin 2018-03-29 20:32:54 +08:00 via Android
where not exists ?
|