連線查詢中不等式的運用
假設有這樣一個例項:
create table a(dept_id int, user_id int)
insert into a select 1, 1
insert into a select 1, 2
insert into a select 1, 13
insert into a select 1, 4
insert into a select 2, 4
insert into a select 2, 1
insert into a select 2, 13
insert into a select 3, 1
insert into a select 3, 10
insert into a select 3, 4
select * from a
表a記錄著dept和user的關係,2個dept中只要有2個以上的相同user,那麼我們就認為這2個dept有關聯,把這樣的dept找出來,返回:
dept_id dept_id
1 2
1 3
2 3
(注意只保留一種對應情況,剔除掉重複情況)
實際案例:
透過人員比較來確定單位是否相同
其中只要有三個以上相同的人員,我們就認為是同一個單位了
SQL如下,注意這裡使用"
select x.dept_id as aa, y.dept_id as bb
from a x, a y
where x.user_id = y.user_id and x.dept_id < y.dept_id
group by x.dept_id, y.dept_id
having count(*) >= 2
order by aa
可以和以下SQL比較:
select x.dept_id as aa, y.dept_id as bb
from a x, a y
where x.user_id = y.user_id and x.dept_id <> y.dept_id
group by x.dept_id, y.dept_id
having count(*) >= 2
order by aa
第一條SQL只取x中dept_id小於y中dept_id的記錄,過濾了重複記錄!很巧妙。
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/66009/viewspace-881832/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- 連線查詢
- MySql中的資料查詢語言(DQL)三:連線查詢MySql
- select查詢中union連線符
- SQL連線查詢SQL
- oracle 連線查詢Oracle
- 【Oracle】--連線查詢Oracle
- sql 連線查詢例項(left join)三表連線查詢SQL
- 資料庫資料的查詢----連線查詢資料庫
- MySQL之連線查詢和子查詢MySql
- mysql查詢語句5:連線查詢MySql
- select查詢之四:連線查詢
- MySQL之連線查詢MySql
- 資料庫 - 連線查詢、巢狀查詢、集合查詢資料庫巢狀
- mysql-分組查詢-子查詢-連線查詢-組合查詢MySql
- myeclipse 中java連線mysql、查詢測試EclipseJavaMySql
- MySQL全面瓦解12:連線查詢的原理和應用MySql
- oracle連線查詢詳解Oracle
- MySQL學習-連線查詢MySql
- Hibernate連線查詢join
- 【janes】多表查詢 外連線
- MySQL8:連線查詢MySql
- 水煮oracle31----連線查詢&合併查詢Oracle
- PostgreSQL - 查詢表名、連線狀況、磁碟佔用SQL
- 在 SQL Server 中查詢活動連線和死鎖SQLServer
- /*+ MERGE_AJ */ 放到NOT IN 子查詢中反向連線
- Hibernate-ORM:13.Hibernate中的連線查詢ORM
- 查詢表中的連結行
- MySQL內連線查詢語句MySql
- 分組查詢連線號段
- Sql Server系列:多表連線查詢SQLServer
- SQL複雜查詢多表連線SQL
- SQL裡3個表的連線查詢SQL
- oracle心得4--集合查詢@oracle中的多表連線@案例分析Oracle
- select查詢之五:分析函式在查詢的運用函式
- 3.DQL資料查詢語言(內連線,外連線,自連線)
- MySQL 連線查詢超全詳解MySql
- Hibernate【查詢、連線池、逆向工程】
- PHP連線、查詢MySQL資料庫PHPMySql資料庫