我让我的真实案例更简单。
案例:
有多条曲线通过点,每一条都有最后一个点,最后一个点在数据库中表示为曲线的最大点序值。
应找到通过特定点且具有相同最终点(相同点ID)的曲线
案例(表格):
点表:
point_id|x|y
编辑:
曲线点表示例-查找具有相同点ID=80和相同终点的所有曲线:
id|curve_id|point_id|point_order
|119 |6 |12
|119 |80 |9
|119 |1000 |1
|76 |80 |7
|76 |6 |9
|76 |2 |2
|90 |80 |7
|90 |6 |9
|90 |99 |15
输出结果应为:
|curve_id|
|119 |
|76 |
因为曲线119、76具有相同的终点=6,并且具有相同的点80。
曲线90不是因为点6不是他的终点
psedocode函数-需要为选择相同的终点添加代码:
function findCurvesForSamePointAndSameFinalPoint(pointID){
query="SELECT curve_id FROM curve INNER JOIN point GROUP BY curve_id HAVING point_id="+pointID+";";
return getDATABASEResult(query);
}
编辑2:
带有一些要测试的数据的联机SQL:http://sqlfiddle.com/#!2/59e9f/1(存在的查询不起作用)
谢谢
最佳答案
如果我没弄错的话。是这样的:
SQLFiddle demo
select distinct c1.curve_id,(select point_id from curve t1
where t1.curve_id=c1.curve_id
order by point_order desc
limit 1)
TheLastPoint
from curve c1
join curve c2 on
(select point_id from curve t1
where t1.curve_id=c1.curve_id
order by point_order desc
limit 1)
=
(select point_id from curve t2
where t2.curve_id=c2.curve_id
order by point_order desc
limit 1)
And c1.curve_id<>c2.curve_id
where c1.curve_id in (select curve_id from curve where point_id=80)
and
c2.curve_id in (select curve_id from curve where point_id=80)
order by TheLastPoint,c1.curve_id
关于mysql - 如何使mysql查询该案例,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/14955590/