MairDB连接表(四)

   

第一部分 UNION

UNION 其实就是合并两个SELECT结果集

union是产生的两个记录集(字段要一样的)并在一起,成为一个新的记录集 。

MariaDB [study_db]> SELECT * FROM new_books WHERE classify < 6

    -> UNION

    -> SELECT * FROM new_books WHERE classify = 18;

+---------+------------------+-------------------+------------------+-------------------------------------------------------+----------+------------+

| book_id | book_name        | book_author_name  | publication_date | description                                           | classify | book_price |

+---------+------------------+-------------------+------------------+-------------------------------------------------------+----------+------------+

|      11 | 失控             凯文·凯利         | 2010-12-01       | 科技的发展让人迷失在知识的海洋                        | 2        |     123.00 |

|      12 | 苏菲的世界       乔斯坦·贾德       | 1999-04-01       | NULL                                                  | 2        |      30.00 |

|      13 | 道德经           老子              | 1999-10-01       | ..经                                              | 2        |       NULL |

|      14 | 社会契约论       卢梭              | 2003-02-01       | NULL                                                  | 2        |       NULL |

|       1 | 跟我学MariaDB    | hhw               | 2016-12-03       | 开启数据库的大门                                      | 18       |      44.00 |

|       2 | 跟我学NodeJS     | hhw               | 2016-12-02       | 学习基础,领略框架,迈向后台这条不归路                  | 18       |      44.44 |

|       3 | HTTP权威指南     | O'Reilly          | 2002-01-01       | 网络基础解疑                                          | 18       |      79.00 |

+---------+------------------+-------------------+------------------+-------------------------------------------------------+----------+------------+

7 rows in set (0.01 sec)2.6 AND OR 结合使用

筛选book_id等于 3 或 10 ,并且在一月出版的书;默认从前往后执行, 当然可以用(..)

其中用到日期函数, 后续完善;

SELECT * FROM books WHERE (book_id = 3 OR book_id = 10) AND  month(publication_date) 1;

+---------+------------------+------------------+------------------+-------------+----------+------+

| book_id | book_name        | book_author_name | publication_date | description | classify | c    |

+---------+------------------+------------------+------------------+-------------+----------+------+

|       3 | HTTP权威指南     NULL             | 2002-01-01       | NULL        | 18       | NULL |

|      10 | 平凡的世界       NULL             | 2005-01-01       | NULL        | 9        | NULL |

+---------+------------------+------------------+------------------+-------------+----------+------+

2 rows in set (0.00 sec)

前后两个表字段需要数量一致, 反面实例

MariaDB [study_db]> SELECT * FROM new_books WHERE classify < 6 UNION  SELECT * FROM book_classify  WHERE classify_id = 18;

ERROR 1222 (21000): The used SELECT statements have a different number of columns

1.1 首先对于别名做个最简单的实例:

MariaDB [study_db]> SELECT

    ->      '文学' AS '�  类', COUNT(*) AS '� 数量'

    ->     FROM book_classify;

+-----------+-------------+

�  类      � 数量       |

+-----------+-------------+

文学      |          22 |

+-----------+-------------+

1 row in set (0.01 sec)

1.2 汇总表

1. 更清楚且更直观;

 

MariaDB [study_db]> SELECT book_id , book_name, book_classify.classify_name, book_classify.classify_id, book_classify.description AS '描述'

    ->     FROM book_classify , new_books

    ->     WHERE new_books.classify = book_classify.classify_id;

+---------+------------------+-----------------+-------------+--------------------+

| book_id | book_name        | classify_name   | classify_id | 描述               |

+---------+------------------+-----------------+-------------+--------------------+

|       1 | 跟我学MariaDB    | 工业技术        |          18 | 工业技术           |

|       2 | 跟我学NodeJS     | 工业技术        |          18 | 工业技术           |

|       3 | HTTP权威指南     工业技术        |          18 | 工业技术           |

|       4 | 追风筝的人       文学            |           9 | 文学               |

|       5 | 小王子           文学            |           9 | 文学               |

|       6 | 围城             文学            |           9 | 文学               |

|       7 | 活着             文学            |           9 | 文学               |

|       8 | 解忧杂货店       文学            |           9 | 文学               |

|       9 | 简爱             文学            |           9 | 文学               |

|      10 | 平凡的世界       文学            |           9 | 文学               |

|      11 | 失控             哲学、宗教      |           2 | 哲学、宗教类       |

|      12 | 苏菲的世界       哲学、宗教      |           2 | 哲学、宗教类       |

|      13 | 道德经           哲学、宗教      |           2 | 哲学、宗教类       |

|      14 | 社会契约论       哲学、宗教      |           2 | 哲学、宗教类       |

|      15 | 经济学原理       经济            |           6 | 经济               |

|      16 | 国富论           经济            |           6 | 经济               |

|      17 | 伟大的博弈       经济            |           6 | 经济               |

|      18 | 经济学常识       经济            |           6 | 经济               |

|      19 | 人类简史         历史、地理      |          11 | 历史、地理         |

|      20 | 国史大纲         历史、地理      |          11 | 历史、地理         |

|      21 | 史记             历史、地理      |          11 | 历史、地理         |

|      22 | 巨人的陨落       历史、地理      |          11 | 历史、地理         |

|      23 | 偷影子的人       文学            |           9 | 文学               |

|      24 | 1984             | 文学            |           9 | 文学               |

+---------+------------------+-----------------+-------------+--------------------+

24 rows in set (0.00 sec)

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值