SELECT *
FROM (SELECT `datetimepart1`.`businessid`
FROM `datetimepart1`
UNION SELECT `datetimepart11`.`businessid`
FROM `datetimepart11`
UNION SELECT `datetimepart12`.`businessid`
FROM `datetimepart12`
) AS table1
INNER JOIN `numberpart7` ON `table1`.`businessid` = `numberpart7`.`businessid`
INNER JOIN `operatornopart6` ON `table1`.`businessid` = `operatornopart6`.`businessid`
INNER JOIN `phoneno3` ON `table1`.`businessid` = `phoneno3`.`businessid` 这个语句能够查询到3条记录:
businessid number hashednumber businessid
20 230605198605061847 230605198605061847 20
21 230605198605067847 230605198605067847 21
22 230605198605067847 230605198605067847 22 但是加入一个查询条件后,只能查到1条了
SELECT *
FROM (SELECT `datetimepart1`.`businessid`
FROM `datetimepart1`
UNION SELECT `datetimepart11`.`businessid`
FROM `datetimepart11`
UNION SELECT `datetimepart12`.`businessid`
FROM `datetimepart12`
) AS table1
INNER JOIN `numberpart7` ON `table1`.`businessid` = `numberpart7`.`businessid`
INNER JOIN `operatornopart6` ON `table1`.`businessid` = `operatornopart6`.`businessid`
INNER JOIN `phoneno3` ON `table1`.`businessid` = `phoneno3`.`businessid` WHERE `numberpart7`.`hashednumber` = '230605198605061847'
AND `numberpart7`.`number` = '230605198605061847'
结果是:
businessid number hashednumber businessid
20 230605198605061847 230605198605061847 20 按理说第二个语句中的where应该不会影响结果的?那位大侠能帮小弟解解惑?谢谢
FROM (SELECT `datetimepart1`.`businessid`
FROM `datetimepart1`
UNION SELECT `datetimepart11`.`businessid`
FROM `datetimepart11`
UNION SELECT `datetimepart12`.`businessid`
FROM `datetimepart12`
) AS table1
INNER JOIN `numberpart7` ON `table1`.`businessid` = `numberpart7`.`businessid`
INNER JOIN `operatornopart6` ON `table1`.`businessid` = `operatornopart6`.`businessid`
INNER JOIN `phoneno3` ON `table1`.`businessid` = `phoneno3`.`businessid` 这个语句能够查询到3条记录:
businessid number hashednumber businessid
20 230605198605061847 230605198605061847 20
21 230605198605067847 230605198605067847 21
22 230605198605067847 230605198605067847 22 但是加入一个查询条件后,只能查到1条了
SELECT *
FROM (SELECT `datetimepart1`.`businessid`
FROM `datetimepart1`
UNION SELECT `datetimepart11`.`businessid`
FROM `datetimepart11`
UNION SELECT `datetimepart12`.`businessid`
FROM `datetimepart12`
) AS table1
INNER JOIN `numberpart7` ON `table1`.`businessid` = `numberpart7`.`businessid`
INNER JOIN `operatornopart6` ON `table1`.`businessid` = `operatornopart6`.`businessid`
INNER JOIN `phoneno3` ON `table1`.`businessid` = `phoneno3`.`businessid` WHERE `numberpart7`.`hashednumber` = '230605198605061847'
AND `numberpart7`.`number` = '230605198605061847'
结果是:
businessid number hashednumber businessid
20 230605198605061847 230605198605061847 20 按理说第二个语句中的where应该不会影响结果的?那位大侠能帮小弟解解惑?谢谢
SELECT *
FROM ( SELECT `datetimepart1`.`businessid`
FROM `datetimepart1`
UNION SELECT `datetimepart11`.`businessid`
FROM `datetimepart11`
UNION SELECT `datetimepart12`.`businessid`
FROM `datetimepart12`
) AS table1
INNER JOIN `numberpart7` ON `table1`.`businessid` = `numberpart7`.`businessid`
INNER JOIN `operatornopart6` ON `table1`.`businessid` = `operatornopart6`.`businessid`
INNER JOIN `phoneno3` ON `table1`.`businessid` = `phoneno3`.`businessid`) aa
WHERE ``hashednumber` = '230605198605061847'
AND `number` = '230605198605061847'
SQL执行顺序是:FROM->JOIN->WHERE,没有看到你的记录,应该是其它两条记录不满足条件
where中所加的条件与第一次查询到的3条记录完全相同,按说都是满足的啊
businessid number hashednumber businessid
20 230605198605061847 230605198605061847 20
21 230605198605067847 230605198605067847 21
22 230605198605067847 230605198605067847 22 加上你的条件
WHERE `numberpart7`.`hashednumber` = '230605198605061847'
AND `numberpart7`.`number` = '230605198605061847' 这时,你的三条记录中只有第一条符合这个条件啊。
businessid number hashednumber businessid
20 230605198605061847 230605198605061847 20
21 230605198605067847 230605198605067847 21
22 230605198605067847 230605198605067847 22
注意差别。
AND `numberpart7`.`number` = '230605198605061847'230605198605061847
230605198605067847