【发布时间】:2016-01-22 13:30:01
【问题描述】:
我编写了一个复杂的mysql 查询,它没有返回所有请求的数据。似乎 INNER JOIN 无法正常工作。 此查询确实返回了正确的结果集,我只是缺少连接表中的列。
我的查询:
SELECT Table1.Col1, Col2, Col3, Col4, Col5, Col6, ( 6371 * acos( cos(radians(?) )
* cos( radians( lat ) ) * cos( radians( lng ) - radians(?) ) + sin( radians(?) )
* sin( radians( lat ) ) ) ) AS distance
FROM Table1
INNER JOIN Table2
ON Table1.Col1 = Table2.Col1
WHERE TABLE2.Col2 =?
AND Table2.Col3 =?
HAVING distance < ?
ORDER BY distance
我的结果只包含来自 Table1 的值,为什么 INNER JOIN 不起作用?
编辑: 我根据 P.Jairaj 的回答将我的查询更改为这个,这似乎对我有用:
SELECT T1.Col1, T1.Col2, T1.Col3, T1.Col4, T1.Col5, T1.Col6, T2.Col1,
( 6371 * ACOS( COS( RADIANS('?') ) *
COS( RADIANS( lat ) ) * COS( RADIANS( lng ) - RADIANS('?') ) +
SIN( RADIANS('?') ) * SIN( RADIANS( lat ) ) ) ) AS distance
FROM T1, T2
WHERE T1.Col1 = T2.Col1
AND T2.Col2 = '?'
AND T2.Col3 = '?'
HAVING distance < '?'
ORDER BY distance
【问题讨论】:
-
试试
left outer join -
您需要养成accepting answers 的习惯,它可以帮助您解决问题。
-
我得到的答案让我更接近解决方案,但并非 100% 正确。在我看来,如果我接受这些作为答案,它会让未来的访客感到困惑......
标签: mysql php mysql inner-join