一些SQL操作(收集)
1. GROUP_CONCAT
例如:數據如下
+----------+----+--------------------------+
| locus | id |
journal |
+----------+----+--------------------------+
| AB086827 | 1 |
Unpublished |
| AB086827 | 2 | Submitted (20-JUN-2002) |
| AF040764 | 23 |
Unpublished |
| AF040764 | 24 | Submitted (31-DEC-1997) |
+----------+----+--------------------------+
語句 SELECT locus, GROUP_CONCAT(id) FROM info WHERE locus IN(‘AB086827‘,‘AF040764‘) GROUP BY locus; 的返回結果為
+----------+------------------+
| locus | GROUP_CONCAT(id) |
+----------+------------------+
| AB086827 |
1,2 |
| AF040764 |
23,24 |
+----------+------------------+
2. FIND_IN_SET(str,strlist)
功能:查詢字段 (strlist) 中包含(str)的結果,返回結果為null或記錄
參數:1) str 要查詢的字符串(可以是個字段名)
2) strlist 字段名 參數以 ”,” 分隔 如 (1, 2, 6, 8)
示例:1) SELECT FIND_IN_SET(‘b‘, ‘a,b,c,d‘); // 返回值為2,即第2個值
2) SELECT * FROM t_areainfo WHERE FIND_IN_SET(id,strlist); // 輸出表中find_in_set返回的哪些記錄
3. 數組 函數:
implode() ---把數組轉換成字符串
explode() ---把字符串轉換成數組
4. SELECT INTO 語法
1) 語句從一個表中選取數據,然後把數據插入另一個表中。
SELECT *
INTO new_table_name [IN externaldatabase]
FROM old_tablename
2) 選擇的結果處理後存入變量
SELECT group_concat(id) INTO sTempChd FROM treeNodes where
FIND_IN_SET(pid, sTempChd) > 0;
# 對於所有sTempChd中的父節點,找出其子節點,並將它們串接,存入STempChd
5. SQL將查詢結果插入到另一個表的三種情況
1)如果要插入目標表不存在:
select * into 目標表 from 表 where ...
2)如果要插入目標表已經存在:
insert into 目的表 select * from 表 where 條件
3)如果是跨數據庫操作的話: 怎麽把A數據庫的atable表所查詢的東西,全部插入到B 數據庫的btable表中
select * into B.btable from A.atable where ..
一些SQL操作(收集)