連續(xù)出現(xiàn)3次的值
讓客戶滿意是我們工作的目標(biāo),不斷超越客戶的期望值來(lái)自于我們對(duì)這個(gè)行業(yè)的熱愛(ài)。我們立志把好的技術(shù)通過(guò)有效、簡(jiǎn)單的方式提供給客戶,將通過(guò)不懈努力成為客戶在信息化領(lǐng)域值得信任、有價(jià)值的長(zhǎng)期合作伙伴,公司提供的服務(wù)項(xiàng)目有:申請(qǐng)域名、網(wǎng)絡(luò)空間、營(yíng)銷軟件、網(wǎng)站建設(shè)、巴東網(wǎng)站維護(hù)、網(wǎng)站推廣。
有時(shí)候SQL版本不夠高
方法:用 DISTINCT 和 WHERE 語(yǔ)句
算法
連續(xù)出現(xiàn)的意味著相同數(shù)字的 Id 是連著的,由于這題問(wèn)的是至少連續(xù)出現(xiàn) 3 次,我們使用 Logs 并檢查是否有 3 個(gè)連續(xù)的相同數(shù)字。
Id Num Id Num Id Num
1 1 2 1 3 1
注意:前兩列來(lái)自 l1 ,接下來(lái)兩列來(lái)自 l2 ,最后兩列來(lái)自 l3 。
然后我們從上表中選擇任意的 Num 獲得想要的答案。同時(shí)我們需要添加關(guān)鍵字 DISTINCT ,因?yàn)槿绻粋€(gè)數(shù)字連續(xù)出現(xiàn)超過(guò) 3 次,會(huì)返回重復(fù)元素。
MySQL
假設(shè)右邊5,8那列是B列
你在要統(tǒng)計(jì)個(gè)數(shù)的單元格那里輸入公式=COUNTIF(A:A,"10")
就可以了
哦對(duì)了,這個(gè)是excel
下面SQL代碼假設(shè)表名為T,運(yùn)行時(shí)請(qǐng)將表名T更改為實(shí)際表名,其它地方請(qǐng)不要?jiǎng)?。這段代碼已經(jīng)實(shí)測(cè)通過(guò)。上機(jī)試試吧! SELECT T.* FROM T INNER JOIN (SELECT NAME FROM (SELECT NAME,COUNT(*) AS QTY FROM T GROUP BY NAME)A WHERE A.QTY1)B ON T.NAME=B.NAME ORDER BY T.NAME,T.ID 說(shuō)明:這段代碼看上去雖然比較復(fù)雜,盡管有其它比較簡(jiǎn)單的寫法,但是我覺(jué)得這個(gè)寫法在表數(shù)據(jù)量較大時(shí)效率會(huì)更高一些。 再給一個(gè)稍微簡(jiǎn)單的寫法,其效率也差不多。 SELECT T.* FROM T, (SELECT NAME FROM T GROUP BY NAME HAVING COUNT(*)1)A WHERE T.NAME=A.NAME ORDER BY T.NAME, T.ID; 你的問(wèn)題“查詢一張表中 字段A 相同的記錄數(shù)大于1條的記錄” -- 我認(rèn)為有一點(diǎn)筆誤,因?yàn)樵谀闾峁┑谋碇袥](méi)有叫做“A”的字段,所以我上面的答案是基于問(wèn)題“查詢一張表中 字段NAME 相同的記錄數(shù)大于1條的記錄”而做出的。 如果你問(wèn)題的實(shí)際要求是“查詢一張表中 字段NAME 等于A,且其記錄數(shù)大于1條的記錄”那么只要對(duì)我上面的SQL語(yǔ)句加一個(gè)“Where”操作符就可以解決。以第二個(gè)SQL語(yǔ)句為例,這樣寫: SELECT T.* FROM T, (SELECT NAME FROM T WHER NAME='A' GROUP BY NAME HAVING COUNT(*)1)A WHERE T.NAME=A.NAME ORDER BY T.NAME, T.ID 尊敬的“冰風(fēng)舞雨”先生如果你覺(jué)得我的回答無(wú)聊,請(qǐng)投訴并刪除本人的作答。作為一個(gè)認(rèn)真的答題者,總是希望提問(wèn)者能給一個(gè)回復(fù),不管評(píng)價(jià)是好還是壞。 ~
這個(gè)mysql是做不到的,除非你在刪除的時(shí)候,對(duì)id=3以后的數(shù)據(jù)進(jìn)行update操作都減減1操作,不過(guò)這樣做沒(méi)什么意義吧
其一:給連續(xù)相同的type編號(hào),即大 1 大2 大3 小1 小2……,這個(gè)需要用到用戶變量
其二:編號(hào)后進(jìn)行條件過(guò)濾
其三:分組統(tǒng)計(jì)
這三個(gè)可以寫成一個(gè)SQL!