mysql的dual
来源:互联网 发布:linux命令ls -lre意思 编辑:程序博客网 时间:2024/06/10 09:40
MySQL 中的 dual 表
因为 MySQL 和 SQL Server 中, 可以
SELECT 1;
不需要 FROM 表。
所以从来没有考虑过 Oracle 里面的 dual 表, 在 MySQL 当中要如何处理。
mysql> select * from test_book1;
+------+-----------+--------------------------------+
| id | name | data |
+------+-----------+--------------------------------+
| 1 | 测试数据1 | 测试CSV文件中,有逗号 |
| 2 | 测试数据2 | 测试CSV文件中有"双引号" |
| 3 | 测试数据3 | 测试CSV文件中,有逗号和"双引号" |
| 4 | 测试数据4 | 普通数据 |
+------+-----------+--------------------------------+
4 rows in set (0.01 sec)
最终用户 希望在插入数据库表以前,先判断数据是否已存在
mysql> INSERT INTO test_book1
-> SELECT 1, 'TEST', 'ABC'
-> WHERE NOT EXISTS( SELECT 1 FROM test_book1 WHERE id = 1);
ERROR 1064 (42000): You have an error in your SQL syntax; check the manual that corresponds to your
MySQL server version for the right syntax to use near 'WHERE NOT EXISTS( SELECT 1 FROM test_book1 WH
ERE id = 1)' at line 3
结果出错了。
然后尝试单独写一下 SELECT 语句
mysql> SELECT 1, 'TEST', 'ABC'
-> WHERE NOT EXISTS( SELECT 1 FROM test_book1 WHERE id = 1);
ERROR 1064 (42000): You have an error in your SQL syntax; check the manual that corresponds to your
MySQL server version for the right syntax to use near 'WHERE NOT EXISTS( SELECT 1 FROM test_book1 WH
ERE id = 1)' at line 2
结果还是出错了。
加上一句 FROM dual 以后,正常了。
mysql> SELECT 1, 'TEST', 'ABC' FROM dual
-> WHERE NOT EXISTS( SELECT 1 FROM test_book1 WHERE id = 1);
Empty set (0.00 sec)
mysql> INSERT INTO test_book1
-> SELECT 1, 'TEST', 'ABC' FROM dual
-> WHERE NOT EXISTS( SELECT 1 FROM test_book1 WHERE id = 1);
Query OK, 0 rows affected (0.00 sec)
Records: 0 Duplicates: 0 Warnings: 0
mysql> INSERT INTO test_book1
-> SELECT 5, 'TEST', 'ABC' FROM dual
-> WHERE NOT EXISTS( SELECT 1 FROM test_book1 WHERE id = 5);
Query OK, 1 row affected (0.00 sec)
Records: 1 Duplicates: 0 Warnings: 0
mysql> select * from test_book1;
+------+-----------+--------------------------------+
| id | name | data |
+------+-----------+--------------------------------+
| 1 | 测试数据1 | 测试CSV文件中,有逗号 |
| 2 | 测试数据2 | 测试CSV文件中有"双引号" |
| 3 | 测试数据3 | 测试CSV文件中,有逗号和"双引号" |
| 4 | 测试数据4 | 普通数据 |
| 5 | TEST | ABC |
+------+-----------+--------------------------------+
5 rows in set (0.00 sec)
因为 MySQL 和 SQL Server 中, 可以
SELECT 1;
不需要 FROM 表。
所以从来没有考虑过 Oracle 里面的 dual 表, 在 MySQL 当中要如何处理。
mysql> select * from test_book1;
+------+-----------+--------------------------------+
| id | name | data |
+------+-----------+--------------------------------+
| 1 | 测试数据1 | 测试CSV文件中,有逗号 |
| 2 | 测试数据2 | 测试CSV文件中有"双引号" |
| 3 | 测试数据3 | 测试CSV文件中,有逗号和"双引号" |
| 4 | 测试数据4 | 普通数据 |
+------+-----------+--------------------------------+
4 rows in set (0.01 sec)
最终用户 希望在插入数据库表以前,先判断数据是否已存在
mysql> INSERT INTO test_book1
-> SELECT 1, 'TEST', 'ABC'
-> WHERE NOT EXISTS( SELECT 1 FROM test_book1 WHERE id = 1);
ERROR 1064 (42000): You have an error in your SQL syntax; check the manual that corresponds to your
MySQL server version for the right syntax to use near 'WHERE NOT EXISTS( SELECT 1 FROM test_book1 WH
ERE id = 1)' at line 3
结果出错了。
然后尝试单独写一下 SELECT 语句
mysql> SELECT 1, 'TEST', 'ABC'
-> WHERE NOT EXISTS( SELECT 1 FROM test_book1 WHERE id = 1);
ERROR 1064 (42000): You have an error in your SQL syntax; check the manual that corresponds to your
MySQL server version for the right syntax to use near 'WHERE NOT EXISTS( SELECT 1 FROM test_book1 WH
ERE id = 1)' at line 2
结果还是出错了。
加上一句 FROM dual 以后,正常了。
mysql> SELECT 1, 'TEST', 'ABC' FROM dual
-> WHERE NOT EXISTS( SELECT 1 FROM test_book1 WHERE id = 1);
Empty set (0.00 sec)
mysql> INSERT INTO test_book1
-> SELECT 1, 'TEST', 'ABC' FROM dual
-> WHERE NOT EXISTS( SELECT 1 FROM test_book1 WHERE id = 1);
Query OK, 0 rows affected (0.00 sec)
Records: 0 Duplicates: 0 Warnings: 0
mysql> INSERT INTO test_book1
-> SELECT 5, 'TEST', 'ABC' FROM dual
-> WHERE NOT EXISTS( SELECT 1 FROM test_book1 WHERE id = 5);
Query OK, 1 row affected (0.00 sec)
Records: 1 Duplicates: 0 Warnings: 0
mysql> select * from test_book1;
+------+-----------+--------------------------------+
| id | name | data |
+------+-----------+--------------------------------+
| 1 | 测试数据1 | 测试CSV文件中,有逗号 |
| 2 | 测试数据2 | 测试CSV文件中有"双引号" |
| 3 | 测试数据3 | 测试CSV文件中,有逗号和"双引号" |
| 4 | 测试数据4 | 普通数据 |
| 5 | TEST | ABC |
+------+-----------+--------------------------------+
5 rows in set (0.00 sec)
0 0
- mysql的dual
- mysql dual
- MySQL和ORACLE的虚拟表DUAL
- mysql中的dual表
- MySql类似Oracle的dual虚拟表的比较
- MySQL Dual-Master 双向同步
- 神秘的DUAL
- 神秘的DUAL[转贴]
- Oracle的DUAL
- 神秘的 ORACLE DUAL
- 神秘的DUAL
- 神秘的DUAL
- 神秘的DUAL
- Oracle的dual表
- 神秘的DUAL
- 神秘的 ORACLE DUAL
- oracle的dual
- Oracle的dual
- Protocol Buffers安装与简单使用
- 深度解析windows调试技术之一 [抓取user mode dump文件的几重境界]
- java 读取远程共享文件
- MAC 下 安装配置 MySQL数据库
- linux下mysql的用户管理及访问问题
- mysql的dual
- ListView Item中有Button checkbox 点击Item子控件不响应解决
- 《算法导论》笔记 第24章 24.1 单源最短路径
- xml 杂记
- DAVINCI DM365-DM368开发攻略——开发环境搭建(DVSDK4.02)
- 分布式技术备份
- android sqlite 简单使用(实例)
- 简介Gson使用(一)
- 3.7Bootstrap学习组件篇之大屏幕介绍、页面标题、缩略图、警示框、Well