用于获取结果的sql查询

时间:2013-09-03 05:57:32

标签: mysql sql

我有两张桌子 1)countrycodes:

enter image description here

2)cctonumbers:

enter image description here

问题

当我执行如下查询时:

SELECT * 
FROM   CCTONUMBERS 
       LEFT JOIN COUNTRYCODES AS CC 
              ON CCTONUMBERS.COUNTRYCODE_ID = CC.ID 
WHERE  ( CC.PARENTID = 0 
         AND NUMBER LIKE "93%" ) 
        OR ( CC.PARENTID != 0 
             AND NUMBER LIKE "7%" 
             AND CC.PARENTID IN (SELECT CC.ID 
                                 FROM   CCTONUMBERS 
                                        LEFT JOIN COUNTRYCODES AS CC 
                                               ON 
                                        CCTONUMBERS.COUNTRYCODE_ID = CC.ID 
                                 WHERE  CC.PARENTID = 0 
                                        AND NUMBER LIKE "93%") ) 
ORDER  BY CCTONUMBERS.NUMBER ASC 
LIMIT  0, 20 

我得到的结果如下

enter image description here

我正在寻找的结果是当我在拨号代码中搜索7时,我应该只获得拨号代码(请参阅cctonumbers中的数字栏),从7开始,但我得到的是“93”根据屏幕截图拨打代码列,这是不对的。

如果上述sql查询中存在问题,请告诉我。请参阅上面的表截图以获取表格详细信息

2 个答案:

答案 0 :(得分:0)

您已使用OR与

(CC.parentid=0 AND number like "93%" ) (CC.parentid!=0 AND number like "7%" AND...

表示是否存在93 ..值的数字,而不是使用查询

获取的数字

cctonumbers表的最后一行满足这个条件,其中parentid为0且数字为93.

答案 1 :(得分:0)

您明确要求在where子句的第一部分(OR之前的部分)中编号为93的国家/地区。这就是你使用拨号代码93获得阿富汗的原因。