我们如何将AND&OR运算符与简单联接一起使用?

时间:2018-10-30 13:06:19

标签: mysql sql join select logical-operators

我的数据库 CustomerAddresses Area 中有两个表。

CustomerAddresses的列为-

  • id(主键)
  • areaId(参考表Areas的外键)
  • CustomerId,
  • addressLine1,
  • addressLine2,
  • 地标,
  • 密码,
  • 首选

区域列为-

  • areaId(主键)
  • 名称

 SELECT * FROM CustomerAddresses CA, Areas A 
 WHERE CA.areaId = A.areaId
 AND 
 CA.customerId = 1 
 AND 
 ( CA.addressLine1 like 'd'
 OR 
   CA.addressLine2 like 'd' 
 OR 
   CA.landmark like 'd' 
 OR 
   CONVERT(pincode, CHAR) like 'd' 
 OR 
   A.name like 'd' );

我想从CustomerAddresses中提取一位客户的所有地址,然后搜索那些记录中是否存在字符“ d”。

查询返回空集。

1 个答案:

答案 0 :(得分:1)

这里的问题不是联接,而是事实,您在d调用中的like前后缺少通配符:

CA.addressLine1        like '%d%' OR 
CA.addressLine2        like '%d%' OR 
CA.landmark            like '%d%' OR
CONVERT(pincode, CHAR) like '%d%' OR
A.name                 like '%d%' 
-- These --------------------^-^