我有两张桌子 1)countrycodes:
2)cctonumbers:
问题
当我执行如下查询时:
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
我得到的结果如下
我正在寻找的结果是当我在拨号代码中搜索7时,我应该只获得拨号代码(请参阅cctonumbers中的数字栏),从7开始,但我得到的是“93”根据屏幕截图拨打代码列,这是不对的。
如果上述sql查询中存在问题,请告诉我。请参阅上面的表截图以获取表格详细信息
答案 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获得阿富汗的原因。