在此SQL查询中:
SELECT * FROM CallRecords
WHERE DNIS = '3216547'
ORDER BY date DESC
但是在DNIS =''的WHERE语句中,我希望采用3216547,但请查看另一个表,我有一个不同DNIS的列表,例如:
3216547
9874560
7418523
通常声明如下:
SELECT * FROM CallRecords
WHERE (DNIS = '3216547' OR DNIS = '9874560' DNIS = '7418523')
ORDER BY date DESC
这个有三个的查询很好,但我希望这可以在400个DNIS条目中进行选择。我是否能够在WHERE子句中执行子查询,或者这是否可行。
答案 0 :(得分:1)
SELECT * FROM CallRecords
WHERE DNIS IN (SELECT DNIS FROM DNIS_TABLE)
ORDER BY date DESC
如果你需要来自另一个表的所有DNIS,你可以进行该查询。
答案 1 :(得分:1)
SELECT *
FROM CallRecords
WHERE DNIS IN (SELECT DNIS FROM OtherTable [...])
ORDER BY date DESC
答案 2 :(得分:1)
如果您想从不同的故事中获取数字,可以使用子查询:
SELECT * FROM CallRecords
WHERE DNIS IN (SELECT DISTINCT DNIS FROM DNIS_TABLE)
ORDER BY date DESC
答案 3 :(得分:0)
我只使用连接而不是子查询。如果您需要过滤另一个表中的dnis值,请使用where子句,这样做通常会这样做。
select c.*
from callrecords c
join dnis_tbl d
on c.dnis = d.dnis
order by date desc
但是,如果另一个表为dnis的每个值包含多个行,则需要在where子句中使用子查询将其减少到一行(如果正确编制索引,则可能比使用distinct更好)