国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁(yè) > 數(shù)據(jù)庫(kù) > MySQL > 正文

Mysql數(shù)據(jù)庫(kù)union和order by優(yōu)先級(jí)

2024-07-24 12:36:47
字體:
來(lái)源:轉(zhuǎn)載
供稿:網(wǎng)友

在Mysql的參考手冊(cè)中,并沒(méi)有對(duì)union和order by的優(yōu)先級(jí)進(jìn)行說(shuō)明,它建議的方法是,對(duì)SQL語(yǔ)句加上(),這樣能使SQL的語(yǔ)義更清晰.

例如,需要對(duì)union后的結(jié)果進(jìn)行order by,則"

  1. (SELECT a FROM tbl_name WHERE a=10 AND B=1) 
  2.  
  3. UNION 
  4.  
  5. (SELECT a FROM tbl_name WHERE a=11 AND B=2) 
  6. //開(kāi)源代碼Vevb.com 
  7. ORDER BY a LIMIT 10; 

如果,需要對(duì)單個(gè)SQL語(yǔ)句進(jìn)行order by,則應(yīng)把order by子句放入圓括號(hào)中,如下:

  1. (SELECT a FROM tbl_name WHERE a=10 AND B=1 ORDER BY a LIMIT 10) 
  2.  
  3. UNION 
  4.  
  5. (SELECT a FROM tbl_name WHERE a=11 AND B=2 ORDER BY a LIMIT 10); 

另外注意:圓括號(hào)中用于單個(gè)SQL語(yǔ)句的ORDER BY只有當(dāng)與LIMIT結(jié)合后,才起作用,否則,ORDER BY被優(yōu)化去除,我在innodb引擎的2個(gè)表上測(cè)試了沒(méi)有加(),進(jìn)行union和order by的操作,如下:

  1. SELECT a FROM tbl_name WHERE a=10 AND B=1 
  2.  
  3. UNION 
  4.  
  5. SELECT a FROM tbl_name WHERE a=11 AND B=2 
  6.  
  7. ORDER BY a LIMIT 10; 

發(fā)現(xiàn),它默認(rèn)的結(jié)果也是先進(jìn)行union,然后再order by,和第一種情況執(zhí)行結(jié)果相同,不過(guò),為了邏輯清晰,最好還是加上對(duì)應(yīng)的()比較好.

另外:Mysql中union可以有union,union distinct,union all這3中形式.

union和union distinct會(huì)對(duì)union后的結(jié)果進(jìn)行排重,保證所有返回的行都是唯一的

union all則會(huì)返回所有SELECT語(yǔ)句中得到所有匹配的行.

發(fā)表評(píng)論 共有條評(píng)論
用戶名: 密碼:
驗(yàn)證碼: 匿名發(fā)表
主站蜘蛛池模板: 夹江县| 泸水县| 怀柔区| 菏泽市| 蓬安县| 奉新县| 上犹县| 大化| 上蔡县| 保定市| 遵化市| 沅陵县| 囊谦县| 堆龙德庆县| 固原市| 绍兴市| 白银市| 湖州市| 赞皇县| 秦安县| 通山县| 南昌市| 西吉县| 卢氏县| 定远县| 富顺县| 舒兰市| 阿拉善盟| 盐城市| 富阳市| 彩票| 惠水县| 岗巴县| 蓝田县| 黔江区| 南汇区| 皋兰县| 陇西县| 秦皇岛市| 林西县| 湘阴县|