三、ClickHouse基礎(chǔ):數(shù)據(jù)類型

3.1 數(shù)據(jù)類型

MySQL ClickHouse
byte Int8
short Int16
int Int32
long Int64
varchar String
timestamp DateTime
float Float32
double Float64
boolean

3.1.1 整形

固定長度的整型,包括有符號整型或無符號整型。

整型范圍(-2n-1~2n-1-1):

Int8 - [-128 : 127]

Int16 - [-32768 : 32767]

Int32 - [-2147483648 : 2147483647]

Int64 - [-9223372036854775808 : 9223372036854775807]

無符號整型范圍(0~2n-1):

固定長度的整型,包括有符號整型或無符號整型。

整型范圍(-2n-1~2n-1-1):

Int8 - [-128 : 127]

Int16 - [-32768 : 32767]

Int32 - [-2147483648 : 2147483647]

Int64 - [-9223372036854775808 : 9223372036854775807]

無符號整型范圍(0~2n-1):

UInt8 - [0 : 255]

UInt16 - [0 : 65535]

UInt32 - [0 : 4294967295]

UInt64 - [0 : 18446744073709551615]

3.1.2 浮點型

Float32 - float

Float64 – double

建議盡可能以整數(shù)形式存儲數(shù)據(jù)。例如,將固定精度的數(shù)字轉(zhuǎn)換為整數(shù)值,如時間用毫秒為單位表示,因為浮點型進(jìn)行計算時可能引起四舍五入的誤差。

3.1.3 布爾型

沒有單獨的類型來存儲布爾值??梢允褂?UInt8 類型,取值限制為 0 或 1。

3.1.4 字符串

1)String

字符串可以任意長度的。它可以包含任意的字節(jié)集,包含空字節(jié)。

2)FixedString(N)

固定長度 N 的字符串,N 必須是嚴(yán)格的正自然數(shù)。當(dāng)服務(wù)端讀取長度小于 N 的字符串時候,通過在字符串末尾添加空字節(jié)來達(dá)到 N 字節(jié)長度。 當(dāng)服務(wù)端讀取長度大于 N 的字符串時候,將返回錯誤消息。

與String相比,極少會使用FixedString,因為使用起來不是很方便。

3.1.5 枚舉類型

包括 Enum8 和 Enum16 類型。Enum 保存 'string'= integer 的對應(yīng)關(guān)系。

Enum8 用 'String'= Int8 對描述。

Enum16 用 'String'= Int16 對描述。

創(chuàng)建一個帶有一個枚舉 Enum8('hello' = 1, 'world' = 2) 類型的列:

CREATE TABLE t_enum
 (
  x Enum8('hello' = 1, 'world' = 2)
 )
 ENGINE = TinyLog

這個 x 列只能存儲類型定義中列出的值:'hello'或'world'。如果嘗試保存任何其他值,ClickHouse 拋出異常。

img
img

3.1.4 數(shù)組

Array(T)由 T 類型元素組成的數(shù)組。

T 可以是任意類型,包含數(shù)組類型。 但不推薦使用多維數(shù)組,ClickHouse 對多維數(shù)組的支持有限。例如,不能在 MergeTree 表中存儲多維數(shù)組。

可以使用array函數(shù)來創(chuàng)建數(shù)組:array(T)

也可以使用方括號:[]

創(chuàng)建數(shù)組案例:

img

3.1.5 元組

Tuple(T1, T2, ...):元組,其中每個元素都有單獨的類型。

創(chuàng)建元組的示例:

img

3.1.6 Date

日期類型,用兩個字節(jié)存儲,表示從 1970-01-01 (無符號) 到當(dāng)前的日期值。

3.2 SQL語法

3.2.1 ALL 子句

SELECT ALLSELECT 不帶 DISTINCT 是一樣的。

  • 如果指定了 ALL ,則忽略它。

  • 如果同時指定了 ALLDISTINCT ,則會拋出異常。

3.2.2 ARRAY JOIN子句

對于包含數(shù)組列的表來說是一種常見的操作,用于生成一個新表,該表具有包含該初始列中的每個單獨數(shù)組元素的列,而其他列的值將被重復(fù)顯示。 這是 ARRAY JOIN 語句最基本的場景。

  • ARRAY JOIN - 一般情況下,空數(shù)組不包括在結(jié)果中 JOIN.

  • LEFT ARRAY JOIN - 的結(jié)果 JOIN 包含具有空數(shù)組的行。 空數(shù)組的值設(shè)置為數(shù)組元素類型的默認(rèn)值(通常為0、空字符串或NULL)。

3.2.3 DISTINCT子句

如果 SELECT DISTINCT 被聲明,則查詢結(jié)果中只保留唯一行。 因此,在結(jié)果中所有完全匹配的行集合中,只有一行被保留。

3.2.4 FORMAT子句

ClickHouse支持廣泛的 序列化格式 可用于查詢結(jié)果等。 有多種方法可以選擇格式化 SELECT 的輸出,其中之一是指定 FORMAT format 在查詢結(jié)束時以任何特定格式獲取結(jié)果集。

3.2.5 FORM子句

FROM 子句指定從以下數(shù)據(jù)源中讀取數(shù)據(jù):

JOINARRAY JOIN 子句也可以用來擴(kuò)展 FROM 的功能。

3.2.6 GROUP BY子句

GROUP BY 子句將 SELECT 查詢結(jié)果轉(zhuǎn)換為聚合模式,其工作原理如下:

  • GROUP BY 子句包含表達(dá)式列表(或單個表達(dá)式 -- 可以認(rèn)為是長度為1的列表)。 這份名單充當(dāng) “grouping key”,而每個單獨的表達(dá)式將被稱為 “key expressions”.

  • 在所有的表達(dá)式在 SELECT, HAVING,和 ORDER BY 子句中 必須 基于鍵表達(dá)式進(jìn)行計算 聚合函數(shù) 在非鍵表達(dá)式(包括純列)上。 換句話說,從表中選擇的每個列必須用于鍵表達(dá)式或聚合函數(shù)內(nèi),但不能同時使用。

  • 聚合結(jié)果 SELECT 查詢將包含盡可能多的行,因為有唯一值 “grouping key” 在源表中。 通常這會顯著減少行數(shù),通常是數(shù)量級,但不一定:如果所有行數(shù)保持不變 “grouping key” 值是不同的。

3.2.7 HAVING 子句

允許過濾由 GROUP BY 生成的聚合結(jié)果. 它類似于 WHERE ,但不同的是 WHERE 在聚合之前執(zhí)行,而 HAVING 之后進(jìn)行。

可以從 SELECT 生成的聚合結(jié)果中通過他們的別名來執(zhí)行 HAVING 子句。 或者 HAVING 子句可以篩選查詢結(jié)果中未返回的其他聚合的結(jié)果

3.2.8 INTO OUTFILE 子句

添加 INTO OUTFILE filename 子句(其中filename是字符串) SELECT query 將其輸出重定向到客戶端上的指定文件。

3.2.9 JOIN子句

Join通過使用一個或多個表的公共值合并來自一個或多個表的列來生成新表。 它是支持SQL的數(shù)據(jù)庫中的常見操作,它對應(yīng)于 關(guān)系代數(shù) 加入。 一個表連接的特殊情況通常被稱為 “self-join”.

所有標(biāo)準(zhǔn) SQL JOIN 支持類型:

  • INNER JOIN,只返回匹配的行。

  • LEFT OUTER JOIN,除了匹配的行之外,還返回左表中的非匹配行。

  • RIGHT OUTER JOIN,除了匹配的行之外,還返回右表中的非匹配行。

  • FULL OUTER JOIN,除了匹配的行之外,還會返回兩個表中的非匹配行。

  • CROSS JOIN,產(chǎn)生整個表的笛卡爾積, “join keys” 是 指定。

3.2.10 LIMIT子句

LIMIT m 允許選擇結(jié)果中起始的 m 行。

LIMIT n, m 允許選擇個 m 從跳過第一個結(jié)果后的行 n 行。 與 LIMIT m OFFSET n 語法是等效的。

LIMIT … WITH TIES 修飾符:

如果為 LIMIT n[,m] 設(shè)置了 WITH TIES ,并且聲明了 ORDER BY expr_list, 除了得到無修飾符的結(jié)果(正常情況下的 limit n, 前n行數(shù)據(jù)), 還會返回與第n行具有相同排序字段的行(即如果第n+1行的字段與第n行 擁有相同的排序字段,同樣返回該結(jié)果.

此修飾符可以與: ORDER BY … WITH FILL modifier 組合使用.

3.2.11 LIMIT BY子句

與查詢 LIMIT n BY expressions 子句選擇第一個 n 每個不同值的行 expressions. LIMIT BY 可以包含任意數(shù)量的 表達(dá)式.

SELECT * from hits_v1 limit 17,1 BY CounterID;
SELECT * from hits_v1 limit 1 OFFSET 17 BY CounterID;
--上面sql查詢結(jié)果一致。假如表中有18條數(shù)據(jù)CounterID為1964542331,上面sql語句含義為跳過17條數(shù)據(jù),limit 1:查詢一條。

3.2.12 時間或日期截取函數(shù)(to)—— 返回非日期

函數(shù) 用途 舉例 結(jié)果
toYear() 取日期或時間日期的年份 toYear(toDateTime(‘2018-12-11 11:12:13’)) toYear(toDate(‘2018-12-11’)) 返回 2018
toMonth() 取日期或時間日期的月份 toMonth(toDateTime(‘2018-12-11 11:12:13’)) toMonth(toDate(‘2018-12-11’)) 返回 12
toDayOfMonth() 取日期或時間日期的天(1-31) toMonth(toDayOfMonth(‘2018-12-11 11:12:13’)) 返回 11
toDayOfWeek() 取日期或時間日期的星期(星期一為1,星期日為7)。 toDayOfWeek(toDateTime(‘2018-12-11 11:12:13’)) 返回 2
toHour() 取時間日期的小時 toHour(toDateTime(‘2018-12-11 11:12:13’)) 返回 11
toMinute() 取時間日期的分鐘 toMinute(toDateTime(‘2018-12-11 11:12:13’)) 返回 12
toSecond() 取時間日期的秒 toSecond(toDateTime(‘2018-12-11 11:12:13’)) 返回 13
toMonday() 取時間日期最近的周一(返回日期) toMonday(toDate(‘2018-12-11’)) toMonday(toDateTime(‘2018-12-11 11:12:13’)) 返回 2018-12-10
toTime() 將時間日期的日期固定到某一天,保留原始時間 toTime(toDateTime(‘2018-12-11 11:12:13’)) 返回 1970-01-02 11:12:13

3.2.13 時間或日期截取函數(shù)(toStartOf)—— 返回日期

函數(shù) 用途 舉例 結(jié)果
toStartOfMonth() 取日期或時間日期的月份的第一天,返回日期 toStartOfMonth(toDateTime(‘2018-12-11 11:12:13’))toStartOfMonth(toDate(‘2018-12-11’)) 2018-12-01;
toStartOfQuarter() 取日期或時間日期的季度的第一天,返回日期 toStartOfQuarter(toDateTime(‘2018-12-11 11:12:13’)) 返回 2018-10-01
toStartOfYear() 取日期或時間日期的年份的第一天,返回日期 toStartOfYear(toDateTime(‘2018-12-11 11:12:13’))toStartOfYear(toDate(‘2018-12-11’)) 返回 2018-01-01
toStartOfMinute() 截取時間日期到分鐘(之后歸零),返回日期 toStartOfMinute(toDateTime(‘2018-12-11 11:12:13’)) 返回 2018-12-11 11:12:00
toStartOfFiveMinute() 截取時間日期到最近的5的倍數(shù)分鐘(之后歸零),返回日期 toStartOfFiveMinute(toDateTime(‘2018-12-11 11:12:13’)) 返回 2018-12-11 11:10:00
toStartOfFifteenMinutes() 截取時間日期到最近的15的倍數(shù)分鐘(之后歸零),返回日期 toStartOfFifteenMinutes(toDateTime(‘2018-12-11 11:12:13’)) 返回 2018-12-11 11:00:00
toStartOfHour() 截取時間日期到小時(之后歸零),返回日期 toStartOfHour(toDateTime(‘2018-12-11 11:12:13’)) 返回 2018-12-11 11:00:00
toStartOfDay() 截取時間日期到天(之后歸零),返回日期 toStartOfDay(toDateTime(‘2018-12-11 11:12:13’)) 返回 2018-12-11 00:00:00
timeSlot() 將時間日期中,分鐘大于等于30的歸于30,分鐘數(shù)小于30的歸為00 timeSlot(toDateTime(‘2018-12-11 11:33:13’))timeSlot(toDateTime(‘2018-12-11 11:33:13’)) 返回 2018-12-11 11:00:00返回 2018-12-11 11:30:00

3.2.14 日期或時間日期生成函數(shù)

函數(shù) 用途 舉例 結(jié)果
now() 生成當(dāng)前時間日期 now() 返回 2018-12-13 10:10:12
today() 生成今天的日期 today() 返回 2018-12-13
yesterday() 生成昨天的日期 yesterday() 返回 2018-12-12

3.2.15 精度保留(非四舍五入)

函數(shù) 用途 舉例 結(jié)果
toDecimal32(‘whdwjfew’,8) 將數(shù)值型或者含有非數(shù)字的字符串進(jìn)行精度保留 toDecimal32(23.12291, 3) ; toDecimal32(’_23.12291’, 3) 返回 23.122返回 0.000
toDecimal64(‘whdwjfew’,8) 將數(shù)值型或者含有非數(shù)字的字符串進(jìn)行精度保留 toDecimal64(23.12291, 3); toDecimal64(’_23.12291’, 3) 返回 23.122返回 0.000
toDecimal128(‘whdwjfew’,8) 將數(shù)值型或者含有非數(shù)字的字符串進(jìn)行精度保留 toDecimal128(23.12291, 3); toDecimal128(’_23.12291’, 3) 返回 23.122返回 0.000

3.2.16 字符串轉(zhuǎn)化為整數(shù)(非整數(shù)的字符串返回0)

函數(shù) 用途 舉例 結(jié)果
toUInt8OrZero() 將無符號整數(shù)字符型轉(zhuǎn)化為整數(shù)型,否則返回0 toUInt8OrZero(‘123’); toUInt8OrZero(‘123.12’) 返回 123; 返回 0
toInt8OrZero() 將整數(shù)字符型轉(zhuǎn)化為整數(shù)型,否則返回0 toInt8OrZero(‘123’); toInt8OrZero(’-123’) 返回 123 ; 返回 -123
toFloat32OrZero() 將數(shù)值字符串型轉(zhuǎn)化為數(shù)值型,注意:從toFloat32OrZero開始,丟32的沒有對應(yīng)的函數(shù) toFloat32OrZero(‘-123’); toFloat32OrZero(‘123.123’) 返回 -123; 返回 123.123

3.2.17 日期與時間日期轉(zhuǎn)化

函數(shù) 用途 舉例 結(jié)果
toDate() 將字符型日期轉(zhuǎn)化為日期型 toDate(‘2018-12-24’) 返回 2018-12-24
toDateTime() 將字符型時間日期轉(zhuǎn)化為時間日期型 toDateTime(‘2018-12-24 10:10:00’) 返回 2018-12-24 10:10:00

3.2.18 轉(zhuǎn)化為字符型

函數(shù) 用途 舉例 結(jié)果
toString() 將數(shù)值型、字符型、日期等轉(zhuǎn)化為字符型 toString(‘2018-12-24’)toString(‘123’) 返回 2018-12-24返回 123

3.2.19 查看數(shù)據(jù)類型

函數(shù) 用途 舉例 結(jié)果
toTypeName() 返回數(shù)據(jù)的類型 toTypeName(toString(‘123’))toTypeName(toDate(‘2018-12-24’)) 返回 String返回 Date

3.2.20 基本字符串操作

函數(shù) 用途 舉例 結(jié)果
empty() 判斷字符串是空為1,否則為0 empty(’’); empty(‘123a’) 返回 1;返回 0
notEmpty() 判斷字符串是非空為1,否則為0 notEmpty(’’); notEmpty(‘123a’) 返回 0;返回 1
length() 返回字符串的長度 length(’’); length(‘123a’) 返回 0;返回 4
lower() 將字符串轉(zhuǎn)為小寫 lower(‘a(chǎn)Bc’) 返回 abc
upper() 將字符串轉(zhuǎn)為大寫 upper(‘a(chǎn)Bc’) 返回 ABC
reverse() 將字符串反轉(zhuǎn) reverse(‘a(chǎn)bc’) 返回 cba
substring(s, offset, length) 字符串截取 substring(‘123abcABC’, 2, 3) 返回 23a
appendTrailingCharIfAbsent(s, c) 如果字符串s非空,則將s后追加一個字符c(s最后一個字符與c不同),否則不處理 appendTrailingCharIfAbsent(‘123abc’, ‘b’); appendTrailingCharIfAbsent(‘123abc’, ‘c’) 返回 123abcb返回 123abc

3.2.21 字符串查找

函數(shù) 用途 舉例 結(jié)果
match(haystack,pattern) 字符串正則匹配,返回0或1 match(‘a(chǎn)vhsca’,'vh’) 返回 1
extract(haystack,pattern) 返回匹配到的第一個子串 extract(‘iioomAj12123124OOBJB’, ‘\d+’) 返回 12123124
extractAll(haystack,pattern) 返回匹配到的所有子串,輸出列表 extractAll(‘iioomAj12123124OOBJ123B’, ‘\d+’) 返回 [12123124,123]
like(haystack,pattern) 匹配到的數(shù)據(jù)返回1,否則返回0 like(‘a(chǎn)vhsca’,’%vh%’); like(‘a(chǎn)vhsca’,’%vabjh%’) 返回 1返回 0
notLike(haystack, pattern) 與like()函數(shù)相反 notLike(‘a(chǎn)vhsca’,’%vh%’); notLike(‘a(chǎn)vhsca’,’%vabjh%’) 返回 0返回 1

3.2.22 字符串替換

函數(shù) 用途 舉例 結(jié)果
replaceOne(haystack,pattern,replacement) 替換第一個匹配到的pattern replaceOne(‘a(chǎn)sd123cbbj464sd’, ‘sd’, ‘-’) 返回 a-123cbbj464sd
replaceAll(haystack,pattern,replacement) 替換所有匹配到的pattern replaceOne(‘a(chǎn)sd123cbbj464sd’, ‘sd’, ‘-’) 返回 a-123cbbj464-
replaceRegexpOne(haystack, pattern, replacement) 正則匹配替換第一個匹配到的pattern replaceRegexpOne(‘Hello, World!’, ‘o’, '- ') 返回 Hell- , World!
replaceRegexpAll(haystack,pattern,replacement) 正則匹配替換所有匹配到的pattern replaceRegexpAll(‘Hello, World!’, ‘^’, 'here: ')replaceRegexpAll(‘Hello, World!’, ‘o’, '-- ') 返回 here: Hello, World!返回 Hell-- , W-- rld!

3.2.23 字符串分割

函數(shù) 用途 舉例 結(jié)果
splitByChar(separator, s) 以單個字符分割字符串 splitByChar(’-’, ‘qw-asaf-asfqw-2312-asd’) 返回 [‘qw’,‘a(chǎn)saf’,‘a(chǎn)sfqw’,‘2312’,‘a(chǎn)sd’]
splitByString(separator, s) 以單個或多個字符分割字符串 splitByString(’-’, ‘qw-asaf-asfqw-2312-asd’); splitByString(’-a’, ‘qw-asaf-asfqw-2312-asd’) 返回 [‘qw’,‘a(chǎn)saf’,‘a(chǎn)sfqw’,‘2312’,‘a(chǎn)sd’]返回 [‘qw’,‘saf’,‘sfqw-2312’,‘sd’]

3.2.24 字符串拼接

函數(shù) 用途 舉例 結(jié)果
concat(s1,s2,…) 將字符串拼接 concat(‘123’, ‘a(chǎn)bc’, ‘ABC’) 返回 123abcABC

3.2.25 條件語句

函數(shù) 用途 舉例 結(jié)果
if(cond,then,else) 條件輸出 if(1 > 2, ‘正確’, ‘錯誤’) 返回 錯誤
multiIf(cond_1, then_1, cond_2, then_2…else) 多條件輸出 multiIf(1 > 2, ‘正確’, 2 < 0, ‘正確’, ‘錯誤’) 返回 錯誤

3.2.26 數(shù)學(xué)函數(shù)

函數(shù) 用途 舉例 結(jié)果
e() 返回e的值 e() 返回 2.718281828459045
pi() 返回pi的值 pi() 返回 3.141592653589793
exp(x) 返回e的x次方 exp(1) 返回 2.718281828459045
exp2(x) 返回2的x次方 exp2(2) 返回 4
exp10(x) 返回10的x次方 exp10(1) 返回 10
log(x) 返回log以e為底的對數(shù)值 log(e()) 返回 1
log2(x) 返回log以2為底的對數(shù)值 log2(2) 返回 1
log10(x) 返回log以10為底的對數(shù)值 log10(100) 返回 2
sqrt(x) 對x開平方 sqrt(4) 返回 2
cbrt(x) 對x開立方 cbrt(8) 返回 2
pow(x, y) 返回x的y次方 pow(2, 3) 返回 8

3.2.27 舍入函數(shù)

函數(shù) 用途 舉例 結(jié)果
floor(x[, N]) 向下取數(shù) floor(123.883, 1)floor(123.883, -1) 返回 123.8返回 120
ceil(x[, N]) 向上取數(shù) ceil(123.883, 1)ceil(123.883, -1) 返回 123.9返回 130
round(x[, N]) 四舍五入 round(123.883, 1)round(123.883, -1) 返回 123.9返回 120

3.2.28 URL操作函數(shù)

函數(shù) 用途 舉例 結(jié)果
protocol() 返回URL的協(xié)議類型 protocol(‘http://www.baidu.com.cn’) 返回 http
domain() 返回URL的域名 domain(‘http://www.baidu.com.cn’) 返回 www.baidu.com.cn
domainWithoutWWW() 返回URL不帶www的域名 domainWithoutWWW(‘http://www.baidu.com.cn’) 返回 baidu.com.cn
topLevelDomain() 返回頂級域名 topLevelDomain(‘http://www.baidu.com.cn’) 返回 cn
firstSignificantSubdomain() 返回“第一個重要子域”。 firstSignificantSubdomain(‘http://www.baidu.com.cn’) 返回 baidu
cutToFirstSignificantSubdomain() 返回域中包含頂級子域直至“第一個重要子域”的部分(參見上面的解釋)。 cutToFirstSignificantSubdomain(‘http://www.baidu.com.cn’) 返回 baidu.com.cn
path() 返回URL的路徑 path(‘https://www.baidu.com/s?wd=SQL%E4%B8%AD%E7%9A%84split’) 返回 /s
pathFull() 返回URL的完整路徑 pathFull(‘https://www.baidu.com/s?wd=SQL%E4%B8%AD%E7%9A%84split’) 返回 /s?wd=SQL%E4%B8%AD%E7%9A%84split
queryString() 返回URL的參數(shù)(查詢字符串) queryString(‘https://www.baidu.com/s?wd=SQL%E4%B8%AD%E7%9A%84split’) 返回 wd=SQL%E4%B8%AD%E7%9A%84split
extractURLParameters() 以列表的形式返回URL的參數(shù) extractURLParameters(‘https://www.baidu.com/s?wd=SQL%E4%B8%AD%E7%9A%84split&ur=qwguq’) 返回 [‘wd=SQL%E4%B8%AD%E7%9A%84split’,‘ur=qwguq’]
extractURLParameterNames() 以列表的形式返回URL的參數(shù)名 extractURLParameterNames(‘https://www.baidu.com/s?wd=SQL%E4%B8%AD%E7%9A%84split&ur=qwguq’) 返回 [‘wd’,‘ur’]
cutQueryString() 返回URL?(參數(shù))前面的內(nèi)容 cutQueryString(‘https://www.baidu.com/s?wd=SQL%E4%B8%AD%E7%9A%84split&ur=qwguq’) 返回 https://www.baidu.com/s

3.2.29 IP操作函數(shù)

函數(shù) 用途 舉例 結(jié)果
IPv4StringToNum(s) 將IPV4轉(zhuǎn)為數(shù)值,非IPV4的轉(zhuǎn)化為0 IPv4StringToNum(‘23.217.198.69’); IPv4StringToNum(‘a(chǎn)dwh.124.qwfqw’) 返回 400148037返回 0
IPv4NumToString(num) 將數(shù)值轉(zhuǎn)為IPV4 IPv4NumToString(400148037) 返回 23.217.198.69
IPv4NumToStringClassC(num) 將數(shù)值轉(zhuǎn)為IPV4,且最后的段位用xxx代替 IPv4NumToStringClassC(400148037) 返回 23.217.198.xxx

3.2.30 表連接操作

函數(shù) 用途 舉例 結(jié)果
INNER JOIN 內(nèi)連接 A表 INNER JOIN B表 A表與B表的公共部分
LEFT OUTER JOIN 左外連接 A 表 LEFT OUTER JOIN B表 A表不在B表中的部分
RIGHT OUTER JOIN 右外連接 A 表 RIGHT OUTER JOIN B表 B表不在A表中的部分
FULL OUTER JOIN 全外連接 A 表 FULL OUTER JOIN B表 A與B表全部,沒有為NULL

3.2.31 LIMIT操作

函數(shù) 用途 舉例 結(jié)果
LIMIT N 查詢N條數(shù)據(jù),一般跟ORDER BY 連用 ORDER BY hit DESC LIMIT 10 按照hit列降排取前10
LIMIT N BY Clause 按照Clause列查詢N條數(shù)據(jù),一般跟ORDER BY 連用 SELECT date, domain, count(1) AS hit from db.tb where…GROUP BY date, domain,ORDER BY hit DESCLIMIT 10 BY date 取每天TOP10的域名
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容