如何使用mysql查询从两个表中获取数据,并将某些条件应用于第二个表?

时间:2014-07-04 07:56:18

标签: mysql

我想从具有以下要求的MySql查询生成结果。

表1:

---------------
| nid | type  |
---------------
|  1  | forum |
|  2  | forum |
|  3  | forum |
|  4  | forum |
---------------

表2

-----------------------
| nid | cid | created |
-----------------------
| 1   | 32  | 123456  |
| 2   | 65  | 123457  |
| 4   | 67  | 123458  |
| 1   | 61  | 123491  |
| 1   | 78  | 123497  |
| 2   | 23  | 123498  |
| 1   | 12  | 123698  |
| 4   | 54  | 132365  |
| 4   | 81  | 135698  |
| 1   | 30  | 168965  |
-----------------------

现在我需要如下结果。 (条件:我需要第一个表中的nid,第二个表中相应nid的最小cid WHERE类型='论坛')

--------------
| nid | cid  |
--------------
| 1   |  12  |
| 2   |  23  |
| 4   |  67  |
--------------

4 个答案:

答案 0 :(得分:0)

试试这个

SELECT t1.nid,
       min(t2.cid) as cid
FROM table1 t1
INNER JOIN table2 t2 ON t1.nid=t2.nid
GROUP BY t2.nid;

答案 1 :(得分:0)

这也可行

select nid, min(cid) cid 
from table2 
group by nid

答案 2 :(得分:0)

你可以试试这个

SELECT tbl1.nid,
       min(tbl2.cid) as cid
FROM table1 tbl1
INNER JOIN table2 tbl2 ON tbl1.nid=tbl2.nid
GROUP BY tbl2.nid;

SQL Fiddle

答案 3 :(得分:0)

上述查询在group by子句中存在问题。请检查此查询。

  SELECT t1.NID, MIN(t2.CID) AS cis from 
  TAB1 t1 inner join TAB2 t2 on t1.nid = t2.nid
  group by t1.nid