SQL查询,其中定义来自另一个表

SQL查询,其中定义来自另一个表,sql,sql-server,Sql,Sql Server,在此SQL查询中: SELECT * FROM CallRecords WHERE DNIS = '3216547' ORDER BY date DESC 但在DNIS=的WHERE语句中,我希望使用3216547,但请查看另一个表,我有一个不同DNI的列表,例如: 3216547 9874560 7418523 因此,通常的说法是: SELECT * FROM CallRecords WHERE (DNIS = '3216547' OR DNIS = '9874560' DNIS =

在此SQL查询中:

SELECT * FROM CallRecords 
WHERE DNIS = '3216547' 
ORDER BY date DESC
但在DNIS=的WHERE语句中,我希望使用3216547,但请查看另一个表,我有一个不同DNI的列表,例如:

3216547
9874560
7418523
因此,通常的说法是:

SELECT * FROM CallRecords 
WHERE (DNIS = '3216547' OR DNIS = '9874560' DNIS = '7418523') 
ORDER BY date DESC
这个带有三个的查询很好,但我希望在有400个DNIS条目可供选择的地方进行查询。我是否能够在WHERE子句中执行子查询,或者这是否可能

SELECT * FROM CallRecords 
WHERE DNIS IN (SELECT DNIS FROM DNIS_TABLE)
ORDER BY date DESC
如果需要其他表中的所有DNI,可以执行该查询

SELECT *
FROM CallRecords
WHERE DNIS IN (SELECT DNIS FROM OtherTable [...])
ORDER BY date DESC
如果需要其他表中的所有DNI,可以执行该查询

SELECT *
FROM CallRecords
WHERE DNIS IN (SELECT DNIS FROM OtherTable [...])
ORDER BY date DESC
如果需要其他表中的所有DNI,可以执行该查询

SELECT *
FROM CallRecords
WHERE DNIS IN (SELECT DNIS FROM OtherTable [...])
ORDER BY date DESC

如果您需要其他表中的所有数据,您可以进行该查询。

如果您想从其他表中获取数字,可以使用子查询:

SELECT *
FROM CallRecords
WHERE DNIS IN (SELECT DNIS FROM OtherTable [...])
ORDER BY date DESC
SELECT * FROM CallRecords 
WHERE DNIS IN (SELECT DISTINCT DNIS FROM DNIS_TABLE) 
ORDER BY date DESC

如果要从其他taale获取数字,可以使用子查询:

SELECT * FROM CallRecords 
WHERE DNIS IN (SELECT DISTINCT DNIS FROM DNIS_TABLE) 
ORDER BY date DESC

如果要从其他taale获取数字,可以使用子查询:

SELECT * FROM CallRecords 
WHERE DNIS IN (SELECT DISTINCT DNIS FROM DNIS_TABLE) 
ORDER BY date DESC

如果要从其他taale获取数字,可以使用子查询:

SELECT * FROM CallRecords 
WHERE DNIS IN (SELECT DISTINCT DNIS FROM DNIS_TABLE) 
ORDER BY date DESC

我只会使用联接而不是子查询。如果需要过滤另一个表上的dnis值,请像通常那样使用where子句进行过滤

select c.*
  from callrecords c
  join dnis_tbl d
    on c.dnis = d.dnis
 order by date desc

但是,如果另一个表的每个DNI值包含多行,则需要在where子句中使用子查询将其缩减为一行。如果索引正确,则可能比使用distinct执行得更好。

我只使用联接而不是子查询。如果需要过滤另一个表上的dnis值,请像通常那样使用where子句进行过滤

select c.*
  from callrecords c
  join dnis_tbl d
    on c.dnis = d.dnis
 order by date desc

但是,如果另一个表的每个DNI值包含多行,则需要在where子句中使用子查询将其缩减为一行。如果索引正确,则可能比使用distinct执行得更好。

我只使用联接而不是子查询。如果需要过滤另一个表上的dnis值,请像通常那样使用where子句进行过滤

select c.*
  from callrecords c
  join dnis_tbl d
    on c.dnis = d.dnis
 order by date desc

但是,如果另一个表的每个DNI值包含多行,则需要在where子句中使用子查询将其缩减为一行。如果索引正确,则可能比使用distinct执行得更好。

我只使用联接而不是子查询。如果需要过滤另一个表上的dnis值,请像通常那样使用where子句进行过滤

select c.*
  from callrecords c
  join dnis_tbl d
    on c.dnis = d.dnis
 order by date desc

但是,如果另一个表的每个DNI值包含多行,则需要在where子句中使用子查询将其缩减为一行,如果索引正确,则可能比使用distinct执行得更好。

是的,可以使用子查询执行此操作。当您尝试它时发生了什么?我确实从CallRecords中选择了*,其中DNIS=SELECT*从DNISList ORDER BY date DESC中选择,它说:子查询返回了多个值。当子查询在=、!=、=或者当子查询用作表达式时。是的,您可以使用子查询执行此操作。当您尝试它时发生了什么?我确实从CallRecords中选择了*,其中DNIS=SELECT*从DNISList ORDER BY date DESC中选择,它说:子查询返回了多个值。当子查询在=、!=、=或者当子查询用作表达式时。是的,您可以使用子查询执行此操作。当您尝试它时发生了什么?我确实从CallRecords中选择了*,其中DNIS=SELECT*从DNISList ORDER BY date DESC中选择,它说:子查询返回了多个值。当子查询在=、!=、=或者当子查询用作表达式时。是的,您可以使用子查询执行此操作。当您尝试它时发生了什么?我确实从CallRecords中选择了*,其中DNIS=SELECT*从DNISList ORDER BY date DESC中选择,它说:子查询返回了多个值。当子查询在=、!=、=或者当子查询用作表达式时。