1. 程式人生 > >mysql關於 inner join 資料重複問題

mysql關於 inner join 資料重複問題

  package表的id對應package_product表的package_id,並且兩者是一對多的關係,今天想篩選出package表所有id存在於package_product表的記錄,第一個想到的就是join

select package.*,package_product.package_id from package join package_product
       on(package.id=package_product.package_id);
但是有一個問題,資料會重複,比如package_product表有3個相同的package_id就會查找出3條相同的package表記錄,

加上distinct好像也沒用


所以,又想到了子查詢,select * from package where id in(select distinct package_id from package_product),雖然寫起來簡單,但是這條語句太耗效能了,查詢6條記錄要好幾秒,最後找到了合適的方法

select * from package join (select distinct package_id from package_product) as package_product on(package.id=package_product.package_id);


相關推薦

mysql關於 inner join 資料重複問題

  package表的id對應package_product表的package_id,並且兩者是一對多的關係,今天想篩選出package表所有id存在於package_product表的記錄,第一個想到的就是joinselect package.*,package_produ

inner join 資料重複問題

 在查詢資料時. 寫了一段sql 很奇怪.查詢前5個表的資料時,不會出現重複資料  直到關聯第六個表時(T_IM_InventoryBalance ),重複資料很多。一時間很鬱悶.隨後諮詢實施人員才知。  原來T_IM_InventoryBalance 本身就有多條重複資料,

Mysql 解決left join 資料重複的問題

http://www.cnblogs.com/jackluo/p/3475498.html select p.*,g.roleName,pg.srcType from t_gold_pay_add p left join gRole g on p.roleID=g

MySQL inner join判斷驅動表和被驅動表的一個例子

span tab blog limit es2017 技術 spa employees rst 下述SQL中,驅動表是S表,因為S表有過濾條件 s.emp_no in (10001,10002)。 select s.emp_no ,count(distinc

INNER JOIN 資料庫內連線查詢SQL

--普通查詢SELECT T1.NAME , T2.ORDERNO   FROM TABLE_NAME1 T1 , TABLE_NAME T2 WHERE T1.ID = T2.T1_ID   AND T1.STATUS = '1';--JOIN查詢SELEC

關於mysql inner join 連線查詢的優化

Mysql在遇到inner join聯接語句時,MySQL表關聯的演算法是 Nest Loop Join(巢狀聯接迴圈),Nest Loop Join就是通過兩層迴圈手段進行依次的匹配操作,最後返回結果集合。SQL語句只是描述出希望連線的物件和規則,而執行計劃和執行操作要切實際將一行行的記錄進行匹配。Nes

MySQL INNER JOIN演算法的效率分析

MySQL處理JOIN的方法如下:(摘自MySQL 5.1 參考手冊中文版) 假定我們有一個如下形式的表T1、T2、T3的聯接查詢: SELECT * FROM T1 INNER JOIN T2 ON P1(T1,T2) INNER JOIN T3 ON P2(T

【Transact-SQL】SQL Server自動把left join自動轉化為inner join、以及關聯時的資料重複問題

1、SQL Server自動把left join自動轉化為inner join的問題: 下面的兩個語句都是left join的,但是一個卻轉化成了 inner join drop table a,

MySql update inner joinMySql跨表更新 多表update sql語句?如何將select出來的部分資料update到另一個表裡面?

專案中,評論數,關注數等資料,是實時更新的。+1,-1 這種。 有的時候,可能統計不準確。 需要寫一個統計工具,更新校準下。 用Java寫SQL和函式,程式碼很清晰,方便擴充套件,但是太慢了。 為了簡單起見,只寫sql來統計,然後更新。(不想寫儲存過程) 語句如下: #更新一個人的 關注數 followi

MySQL中使用INNER JOIN來實現Intersect並集操作

int isam har 業務 charset tin ner get 一句話 MySQL中使用INNER JOIN來實現Intersect並集操作 一、業務背景 我們有張表設計例如以下: CREATE TABLE `user_defined_value` (

Mysql中Left Join 與Right JoinInner Join 與 Full Join的區別

chinese ron 兩張 ansi 左連接 ima money key sel 看看Left Join 與Right Join 與 Inner Join 與 Full Join對表進行操作後得到的結果。 在數據庫中新建兩張表,並插入要測試的數據。 新建表:

MySQL分頁優化中的“INNER JOIN方式優化分頁算法”到底在什麽情況下會生效?

表結構 files key 效率 ref 兩個 ges 參考 如果 本文出處:http://www.cnblogs.com/wy123/p/7003157.html 最近無意間看到一個MySQL分頁優化的測試案例,並沒有非常具體地說明測試場景的情況下,給出了

mysql 優化例子:IN 換 INNER JOIN

mysql今天擼代碼時,遇到SQL問題:要將A表查詢的ID,匹配B表的ID,並將B表全部內容查詢出來:未優化前:MySQL [xxuer]> SELECT -> COUNT(*) -> FROM -> t_cmdb_app_version

MySQL Using temporary; Using filesort INNER JOIN優化

關聯表 -- index.php 分布 結果 時間 from sta 包含 問題 通過「SHOW FULL PROCESSLIST」語句很容易就能查到問題SQL,如下: SELECT post.* FROM post INNER JOIN post_tag ON post.

超詳細mysql left join,right join,inner join用法分析

語法 mem 比較 詳細 第一個 a20 object 發生 例子 下面是例子分析表A記錄如下: aID aNum 1 a20050111 2 a20050112 3 a20050113 4

mysql之left join、right joininner join的區別

www. http tle title mysq ner www class div left join(左聯接) 返回包括左表中的所有記錄和右表中聯結字段相等的記錄 right join(右聯接) 返回包括右表中的所有記錄和左表中聯結字段相等的記錄 inner jo

MySQL Crash Course #07# Chapter 15 關系數據庫. INNER JOIN. VS. nested subquery

itl enables cts 測試 each rst not with dex 索引 理解相關表. foreign key JOIN 與保持參照完整性 關於JOIN 的一些建議,子查詢 VS. 聯表查詢 我發現 MySQL 的文檔裏是有教程的,不過對

left join 右表多條資料重複

分享一下我老師大神的人工智慧教程!零基礎,通俗易懂!http://blog.csdn.net/jiangjunshow 也歡迎大家轉載本篇文章。分享知識,造福人民,實現我們中華民族偉大復興!        

MySQL - LEFT JOIN、RIGHT JOININNER JOIN、CROSS JOIN、FULL JOIN

一、Join語法概述 join 用於多表中欄位之間的聯絡,語法如下: ... FROM table1 INNER|LEFT|RIGHT JOIN table2 ON conditiona table1:左表;table2:右表。 JOIN 按照功能大致分為如下三類: INNER

[Mysql語法]--update inner join使用(批量更新)

一:需求 A表和B表的表結構相同,A表是歷史表,B表是增量資料表;想要根據關聯條件更新A表中的資料。 二:表結構 CREATE TABLE `A` (   `id` bigint(20) NOT NULL AUTO_INCREMENT,   `bid` bigin