程序员求职经验分享与学习资料整理平台

网站首页 > 文章精选 正文

Mysql笔试题- 不同字段名、不同字段类型是否可以union

balukai 2025-05-09 17:03:14 文章精选 6 ℃

关于【t1 UNION t2 】的描述,以下错误的是()?

A t1的字段总数要与t2的一致

B 相同字段序号下,t1的字段类型必须要与t2的字段类型一致

C 相同字段序号下,t1的字段名必须要与t2的字段名一致

D 新的结果集中可能含有重复记录

-----

BCD描述错误;

A描述正确,字段总数不一致时无法union;

相同字段序号下,t1的字段类型与t2的字段类型 可以不一致;

相同字段序号下,t1的字段名必须要与t2的字段名 可以不一致;

union 会去重,新的结果集中不可能含有重复记录;union all不会去重,新的结果集中可能含有重复记录;

BCD描述错误;
A描述正确,字段总数不一致时无法union;
B:
mysql> desc t1 ;
+-------+--------+------+-----+---------+-------+
| Field | Type   | Null | Key | Default | Extra |
+-------+--------+------+-----+---------+-------+
| score | double | YES  |     | NULL    |       |
+-------+--------+------+-----+---------+-------+
1 row in set (0.00 sec)
 
mysql> desc t2 ;
+-------+---------+------+-----+---------+-------+
| Field | Type    | Null | Key | Default | Extra |
+-------+---------+------+-----+---------+-------+
| score | char(1) | YES  |     | NULL    |       |
+-------+---------+------+-----+---------+-------+
1 row in set (0.00 sec)
 
mysql> insert into t1 values(80.5) ;
Query OK, 1 row affected (0.00 sec)
 
mysql> insert into t2 values(2) ;
Query OK, 1 row affected (0.00 sec)
 
mysql> select score from t1 union select score from t2 ; -- 字段类型不一致,能正常查询
+-------+
| score |
+-------+
| 80.5  |
| 2     |
+-------+
2 rows in set (0.00 sec)
 
mysql> 
 
 
 
C:
mysql> alter table t2 change score score2 char ; -- 修改字段名为score2
Query OK, 0 rows affected (0.02 sec)
Records: 0  Duplicates: 0  Warnings: 0
 
mysql> insert into t2 values(3) ;
Query OK, 1 row affected (0.00 sec)
 
mysql> select * from t1 ;
+-------+
| score |
+-------+
|  80.5 |
+-------+
1 row in set (0.00 sec)
 
mysql> select * from t2 ;
+--------+
| score2 |
+--------+
| 2      |
| 3      |
+--------+
2 rows in set (0.00 sec)
 
mysql> select score from t1 union select score2 from t2 ; -- 字段名不同,不报错,以第一个子表的字段名为准
+-------+
| score |
+-------+
| 80.5  |
| 2     |
| 3     |
+-------+
3 rows in set (0.00 sec)
 
mysql> 
 
 
 
D:
mysql> insert into t1 values(2) ;
Query OK, 1 row affected (0.00 sec)
 
mysql> select * from t1 ;
+-------+
| score |
+-------+
|  80.5 |
|     2 | -- 含有记录2
+-------+
2 rows in set (0.00 sec)
 
mysql> select * from t2 ;
+--------+
| score2 |
+--------+
| 2      | -- 含有记录2
| 3      |
+--------+
2 rows in set (0.00 sec)
 
mysql> select score from t1 union select score2 from t2 ; -- 会去重
+-------+
| score |
+-------+
| 80.5  |
| 2     | -- 只有一个2,已去重
| 3     |
+-------+
3 rows in set (0.00 sec)
 
mysql> 

end

最近发表
标签列表