SELECT count( t1.id ) , t2.special_value
FROM table_1 AS t1, table_2 AS t2
WHERE t1.`group` = 'val'
AND t2.code = 'val'
返回
count - normal value
special_value - NULL
但
SELECT t2.special_value
FROM table_2 AS t2
WHERE t2.code = 'val'
返回
special_value - another normal value
为什么第一个查询工作错误?..
目前,我需要
(count( t1.id ) + t2.special_value)
答案 0 :(得分:2)
这就是为什么你永远不应该使用SQL'89隐式连接语法。
您没有连接条件导致交叉连接。
使用显式连接语法重写查询:
SELECT count( t1.id ) , t2.special_value
FROM table_1 AS t1
INNER JOIN table_2 AS t2 ON (t1.`group` = t2.code) <<-- join condition here
WHERE .... <<-- filter condition here
GROUP BY .... <<-- group by field here
我不知道表t1和t2是如何链接的,所以你必须稍微调整一下,但这就是它应该如何工作。
请永远不要再使用隐式where
联接。
<强>说明强>
我想知道p.`group`
和pp.code
是什么,但我猜你打算写t1.`group`
和t2.code
如果它们是保留字,你只需要在`
反引号中转义字段和表名
就个人而言,所有这些反叛让我头晕目眩,但那只是我。