mysql distinct 去重(轉載)
在使用mysql時,有時需要查詢出某個欄位不重複的記錄,雖然mysql提供 有distinct這個關鍵字來過濾掉多餘的重複記錄只保留一條,但往往只用它來返回不重複記錄的條數,而不是用它來返回不重記錄的所有值。其原因是 distinct只能返回它的目標欄位,而無法返回其它欄位,這個問題讓我困擾了很久,用distinct不能解決的話,我只有用二重迴圈查詢來解決,而 這樣對於一個數據量非常大的站來說,無疑是會直接影響到效率的。所以我花了很多時間來研究這個問題,網上也查不到解決方案
下面先來看看例子:
table
id name
1 a
2 b
3 c
4 c
5 b
庫結構大概這樣,這只是一個簡單的例子,實際情況會複雜得多。
比如我想用一條語句查詢得到name不重複的所有資料,那就必須使用distinct去掉多餘的重複記錄。
select distinct name from table
得到的結果是:
name
a
b
c
好像達到效果了,可是,我想要得到的是id值呢?改一下查詢語句吧:
select distinct name, id from table
結果會是:
id name
1 a
2 b
3 c
4 c
5 b
distinct怎麼沒起作用?作用是起了的,不過他同時作用了兩個欄位,也就是必須得id與name都相同的才會被排除。。。。。。。
我們再改改查詢語句:
select id, distinct name from table
很遺憾,除了錯誤資訊你什麼也得不到,distinct必須放在開頭。難到不能把distinct放到where條件裡?能,照樣報錯。。。。。。。
很麻煩吧?確實,費盡心思都沒能解決這個問題。
用count函式一試,成功,我。。。。。。。想哭啊,費了這麼多工夫。。。。。。。。原來就這麼簡單。。。。。。
現在將完整語句放出:
select *, count(distinct name) from table group by name
結果:
id name count(distinct name)
1 a 1
2 b 1
3 c 1
最後一項是多餘的,不用管就行了,目的達到。。。。。
唉,原來mysql這麼笨,輕輕一下就把他騙過去了,鬱悶也就我吧(對了,還有容容那傢伙),現在拿出來希望大家不要被這問題折騰。
哦,對,再順便說一句,group by 必須放在 order by 和 limit之前,不然會報錯。。。。。。。。!OK了
如:SELECT DISTINCT FUserId,FShareCount,count(distinct FUserId) FROM t_talent_channel_share WHERE * Group by FUserId Order by FShareCount desc limit 10;
相關推薦
mysql distinct 去重(轉載)
在使用mysql時,有時需要查詢出某個欄位不重複的記錄,雖然mysql提供 有distinct這個關鍵字來過濾掉多餘的重複記錄只保留一條,但往往只用它來返回不重複記錄的條數,而不是用它來返回不重記錄的所有值。其原因是 distinct只能返回它的目標欄位,而無法返回其它欄位
Dstream[Row] 資料批量匯入Mysql 並去重(大致為如果資料庫中有某行資料了,本次執行若有一行與資料庫中的那行相同,則不會再插入進去)
def Save2Mysql(stateDStream: DStream[Row]): Unit = { stateDStream.foreachRDD { rdd => { rdd.foreachPartition(partitionRecord
Java8 list根據一個欄位去重(記錄)
list = list.stream().collect( Collectors.collectingAndThen( Collectors.toCollection(() -> new TreeSet&l
mysql sql語句大全(轉載)
原文地址:https://www.cnblogs.com/bchjazh/p/5997728.html 1、說明:建立資料庫 CREATE DATABASE database-name 2、說明:刪除資料庫 drop database dbname 3、說明:備份sql server --- 建立
原生JS去重(一)--兩種方法去掉重複字元
所謂“去重”,即是去掉重複的字元。本篇部落格講述兩種方式去重,一種是比較簡單但程式碼比較囉嗦點的,另一種是有點深度但是簡潔的。 我直接寫JavaScript程式碼了。 方式一: function deleteRepetionChar(arr){ //先判斷輸入進
移除陣列中的重複元素-列表去重(Python)
給定一個升序排列的陣列,去掉重複的數,並輸出新的陣列的長度。 例如:陣列 A={1,1,2},你的程式應該輸出 2 即新陣列的長度,新陣列為 {1,2}。 要求:不能新開陣列分配額外的空間,即常數空間限制。 輸入格式 輸入一個整數 n(1≤n≤1000)。 接下來一
Java中List集合去重(二)
關於List中物件去重,如果List中儲存的資料型別是基本資料型別,可直接將list集合轉換成set集合,或採用其他方法,上篇有陳述。本篇說下list集合中的資料型別是一個物件型別的情況,需要在物件的實體類中去重寫equals()方法和hashCode()方法。 在該例
一行代碼實現數組去重(ES6)
query 都是 add params log for reac arr UNC ES6中新增了Set數據結構,類似於數組,但是 它的成員都是唯一的 ,其構造函數可以接受一個數組作為參數,如: let array = [1, 1, 1, 1, 2, 3, 4, 4,
Navicat for MySQL 安裝和破解(轉載)
Navicat工具使用方便,但需要破解。 1、安裝Navicat軟體 安裝成功之後進行破解。 然後選擇剛剛安裝的Navicat安裝路徑下找到navicat.exe檔案,點選選擇即可啟用 成功。 可以使用啦! Navicat for MySQL
陣列去重(JS)
(棧型別) 原始值:boolen,num,string,null,undefined (堆型別) 引用值:object,array 首先重新定義一個type()函式, <script> function type(target){ var ret = typeof(targ
資料庫查詢結果去重(distinct與group by)
一般情況下,資料庫去重複有以下那麼三種方法:第一種: 兩條記錄或者多條記錄的每一個欄位值完全相同,這種情況去重複最簡單,用關鍵字distinct就可以去掉。例:1SELECT DISTINCT * FROM TABLE第二種: 兩條記錄之間之後只有部分欄位的值是有重複的,
C#黔驢技巧之去重(Distinct)
前言 關於C#中預設的Distinct方法在什麼情況下才能去重,這個就不用我再多講,針對集合物件去重預設實現將不再滿足,於是乎我們需要自定義實現來解決這個問題,接下來我們詳細講解幾種常見去重方案,孰好孰歹自行判之。 分組 首先給出我們需要用到的物件,如下: public class Person {
Linux下安裝Python3的django並配置mysql作為django默認數據庫(轉載)
make lba del log pri ica www src rim 我的操作系統為centos6.5 1 首先選擇django要使用什麽數據庫。django1.10默認數據庫為sqlite3,本人想使用mysql數據庫,但為了測試方便順便要安裝一下sqlite開發
CSV文件導入Mysql出現的亂碼等問題 (轉載)
一行 varchar data 找到 fma 命令 數據 格式 oca 將*.csv文件導入mysql可使用LOAD DATA INFILE, 概要寫法: Load data in file 具體語法使用可參照:http://dev.mysql.com/doc/ref
Linux下MySQL的安裝和啟動(轉載)
enable linu char cal mysql用戶 客戶端程序 ast 初學 unix 原文鏈接:http://www.linuxidc.com/Linux/2016-07/133234.htm 一、MySQL各類安裝方法的比較 在Linux系統下,MySQL有3種主
[轉抄]oracle單表查詢去重(效率比較高的一種方式)
sel select 單表查詢 效率 查詢 rownum 說明 acl 分組 1 select 2 * 3 from 4 ( 5 select 6 a.*, rownum r_n 7
elastic search6.2.2 實現用戶搜索記錄查詢(去重、排序)
replicas pos 結果 etime rep col cas rms idt elastic search6.2.2 實現搜索記錄查詢 ,類似新浪微博這種,同樣的搜索記錄後面時間點的會覆蓋前面的(主要思路:關鍵詞去重,然後按時間排序) 先創建索引 //我的搜索
mysql數據庫中關於內連接、外鏈接中on where having的用法。(轉載)
cell 顯示 null align 工作 orm 最終 mysql 表數據 SQL中on條件與where條件的區別 數據庫在通過連接兩張或多張表來返回記錄時,都會生成一張中間的臨時表,然後再將這張臨時表返回給用戶。 在使用left jion時
js算法初窺03(簡單搜索及去重算法)
二分搜索 href map 能力 target 新增 一起學 第一次 == 前面我們了解了一些常用的排序算法,那麽這篇文章我們來看看搜索算法的一些簡單實現,我們先來介紹一個我們在實際工作中一定用到過的搜索算法——順序搜索。 1、順序搜索 其實順序搜索十分簡單,我們還
通過JDBC進行簡單的增刪改查(以MySQL為例)(轉載)
IE trac archive solver ttl 賦值 TP 定義 for 轉載:https://www.cnblogs.com/wuyuegb2312/p/3872607.html 目錄 前言:什麽是JDBC 一、準備工作(一):MySQL安裝配置和基礎學習 二、準備