Mysql SELECT 查询与内部连接相结合,其中不显示所有请求的数据


Mysql SELECT query HAVING combined with INNER JOIN WHERE not showing all requested data

我写了一个复杂的mysql查询,它没有返回所有请求的数据。似乎内部连接无法正常工作。此查询确实返回正确的结果集,我只是缺少联接表中的列。

我的查询:

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的值,为什么内部连接不起作用?

编辑:我根据 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

尝试

SELECT t1.Col1, t1.Col2, t2.Col3, t1.Col4, t2.Col5, t2.Col6, ( 6371 * acos( cos(radians(?) )
* cos( radians( lat ) ) * cos( radians( lng ) - radians(?) ) + sin( radians(?) ) 
* sin( radians( lat ) ) ) ) AS distance FROM Table1 t1, Table2 t2 
Where t1.Col1 = t2.Col1
AND t2.Col2 =? AND t2.Col3 =?
AND distance < ? 
ORDER BY distance

尚未在所有选定项目上指定第二个表。例如,如果你想从Table2那里得到一些东西,你会声明:

SELECT Table1.Col1, Table1.Col2, Table2.Col1, Table2.Col2

对于您声明的每一列,您应该明确表选择。

尝试用"代替拥有",在哪里可以尝试

HAVING TABLE2.Col2 =? AND Table2.Col3 =? AND distance < ? ORDER BY distance