我有这个T-SQL语句
select a.CODE
from MASTER..MASTERADD a, MASTER..MASTER b
where a.TELO = '18002000047'
OR a.MOBILE = '18002000047'
AND b.TPIN = '42589'
and a.code = b.code
和
select a.CODE
from MASTER..MASTERADD a, MASTER..MASTER b
where a.TELO = '18001147722'
OR a.MOBILE = '18001147722'
AND b.TPIN = '56783'
and a.code = b.code
第一个语句返回1个结果(单行)(CODE)
第二个返回'CODE',但重复大约9000次以上。
我做错了什么?
答案 0 :(得分:2)
问题是order of operations of the keywords OR
and AND
您需要做的是添加一些括号。您很可能正在寻找这种逻辑:
SELECT a.CODE
FROM MASTER..MASTERADD a
JOIN MASTER..MASTER b
ON a.code = b.code
WHERE (
a.TELO = '18001147722'
OR a.MOBILE = '18001147722'
)
AND b.TPIN = '56783'
答案 1 :(得分:0)
看来你的语句的WHERE部分需要围绕你的OR括号:
SELECT
MASTERADD.CODE
FROM
MASTER..MASTERADD MASTERADD
INNER JOIN
MASTER..MASTER MASTER
ON
MASTERADD..CODE = MASTER.CODE
WHERE
(
MASTERADD..TELO = '18001147722'
OR
MASTERADD..MOBILE = '18001147722'
)
AND
MASTER.TPIN = '56783'
但这可能无法解决您的问题。您有两种不同的条件(不同的电话号码和密码),为什么不期望不同的结果呢?
不太重要的是,我建议你清理代码的语法,因为它可以识别问题区域,以后更容易进行逆向工程。