繁体   English   中英

SQL Server:从2个表中选择

[英]SQL Server : select from 2 tables

我有这个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次以上。

我究竟做错了什么?

问题是关键字ORAND的运算顺序

您需要做的是添加一些括号。 您最有可能在寻找以下逻辑:

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'

看起来您在语句的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'

但是,这可能无法解决您的问题。 您有两个不同的条件(不同的电话号码和个人识别号),那么为什么不期望得到不同的结果呢?

不太重要的是,我建议您清理代码中的语法,因为它使识别问题区域和以后的逆向工程更容易实现。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM