我有两个具有以下结构的表。
Table A
Name, Address, City, State, enterDate
James, 112 Main St, San Diego, CA, 20150224
Steve, 445 Josh St, Chicago, IL, 20150224
Dave, 158 Dove Way, San Diego, CA, 20150325
Table B
Name, Address, City, State, JobName
James, 112 Main St, San Diego, CA, job7
Steve, 445 Josh St, Chicago, IL, job7
Mark, 285 Jake LN, San Diego, CA, job7
我想做的是从表A中选择一切,使用在20150224和20150223之间的enterDate但仅当地址和城市匹配表B中的地址和城市时。
我目前正在进行查询以从表A中选择所有,其中输入日期在20150224和20150223之间。然后我循环遍历它们并执行查询检查表B中是否存在日期。我知道这样做效率不高且速度慢。
有没有一种有效的方法呢?如果是这样,语法会是什么样的?
答案 0 :(得分:2)
您可以使用EXISTS
:
SELECT Name, Address, City, State, enterDate
FROM tableA AS t1
WHERE enterDate BETWEEN '20150223' AND '20150224' AND
EXISTS (SELECT 1
FROM tableB AS t2
WHERE t1.Name = t2.Name AND
t1.Address = t2.Address AND
t1.City = t2.City AND
t1.State = t2.State)
此查询从tableA
中选择一行,如果:
enterDate
介于2015年2月23日至2015年2月24日和 tableB
中存在具有相同Name
,Address
,City
,State
字段的相应记录。