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应该不会影响结果的?那位大侠能帮小弟解解惑?谢谢

解决方案 »

  1. select * from (
    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,没有看到你的记录,应该是其它两条记录不满足条件
      

  2. to wwwwb:
    where中所加的条件与第一次查询到的3条记录完全相同,按说都是满足的啊
      

  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' 这时,你的三条记录中只有第一条符合这个条件啊。
      


  4. businessid  number hashednumber businessid 
    20 230605198605061847 230605198605061847 20 
    21 230605198605067847 230605198605067847 21 
    22 230605198605067847 230605198605067847 22 
    注意差别。
      

  5. WHERE `numberpart7`.`hashednumber` = '230605198605061847' 
    AND `numberpart7`.`number` = '230605198605061847'230605198605061847
    230605198605067847
      

类似问题 »