sql双重查询解决办法

sql双重查询

要实现一个双重查询,查询规则:如下表,查询结果首先按照第一列pid排序,而具有相同aid的行会排在一起。

+—–+——+

| pid | aid |

+—–+——+

| 1 | 2 |

| 2 | 1 |

| 3 | 1 |

| 4 | 2 |

+—–+——+

希望上边的表的到的查询结果是:

+—–+——+

| pid | aid |

+—–+——+

| 1 | 2 |

| 4 | 2 |

| 2 | 1 |

| 3 | 1 |

+—–+——+

希望给一个通用的查询而不是仅针对这组数据的。



你要按物理顺序排序,

SET @a=0;

SET @b=0;

SELECT a.* FROM ttq a INNER JOIN (

SELECT aid,MIN(js) AS pl FROM (

SELECT *,@a:=IF(@b=aid,@a,@a+1) AS js,@b:=aid FROM ttq) a GROUP BY aid) b

ON a.aid=b.aid ORDER BY b.pl




select a.pid,a.aid,min(b.pid)

from tbtest a,tbtest b

where a.aid=b.aid

group by a.pid,a.aid

order by 3,1




1、插入有自增字段的临时表,字段ID自增,再运行

SELECT a.* FROM ttq a INNER JOIN (

SELECT aid,MIN(ID) AS pl FROM 临时表 a GROUP BY aid) b

ON a.aid=b.aid ORDER BY b.pl

2、将

11楼代码生成VIEW、SP,再调用。

sql双重查询解决办法

相关文章:

你感兴趣的文章:

标签云: