我让我的真实案例更简单。
案例:
有多条曲线通过点,每一条都有最后一个点,最后一个点在数据库中表示为曲线的最大点序值。
应找到通过特定点且具有相同最终点(相同点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/

10-11 20:36