2014-09-06 83 views
0

我有这2个表,我需要返回moset使用的办公室。注:1个办公室可以超过1人使用,从表B柱IDO从表A填充MySQL查询SELECT FROM 2表,COUNT最常用

Probaly是group by查询和desclimit 1

表A

| ido| office | guy | 
--------------------- 
| 1 | office1| guy1| 
| 2 | office2| guy2| 
| 3 | office1| guy3| 
| 4 | office1| guy4| 
| 5 | office5| guy5| 
| 6 | office2| guy6| 

表B

| idb| vizit | ido| 
--------------------- 
| 1 | date | 4 | 
| 2 | date | 2 | 
| 3 | date | 5 | 
| 4 | date | 6 | 
| 5 | date | 1 | 
| 6 | date | 6 | 

谢谢!

回答

0

你在GROUP BY中是正确的,LIMIT和DESC在这里很有用;它会导致一个相当直接的查询;

SELECT TableA.office 
FROM TableA 
JOIN TableB 
    ON TableA.ido = TableB.ido 
GROUP BY TableA.office 
ORDER BY COUNT(*) DESC 
LIMIT 1 

它所做的基本上是创建具有所有有效组合的行,并计算每个办公室生成的行数。按照这个数字的简单降序排列会给你最常用的办公室。

An SQLfiddle to test with

+0

它从TableA返回一行,我只需要最常用的办公室。感谢您的支持!延斯的解决方案奏效。 – Blueleaf 2014-09-06 08:26:46

+0

@Blueleaf将查询更改为仅返回访问频率最高的办公室。 – 2014-09-06 08:43:00

+0

效果更好!非常感谢! – Blueleaf 2014-09-06 09:08:57