如何使用IN语句选择所有内容

时间:2017-06-30 11:49:48

标签: oracle plsql

我想使用IN语句过滤一些数据,如:

select * from mytable t where t.field in ( 'some statement' )

我应该写什么而不是'some statement'来从mytable

获取所有数据

如果t.fieldnumber类型且t.fieldvarchar2类型

,我对如何操作感兴趣

3 个答案:

答案 0 :(得分:1)

select * from mytable t where t.field in ( select field from mytable )

您必须注意字段中的 null 值会导致问题。给定的SQL将具有与

相同的结果
select * from mytable t

只要字段不为空。

如果字段为数字 varchar2 ,则无关紧要。

答案 1 :(得分:1)

您在

中看起来想要一个语句
select * from mytable t where t.field in ( 'some statement' )

但是从你的评论我认为这不是必要的。所以它可以是偶数:

select * from mytable t where t.field in (t.field)

Oracle的优化程序将看到where t.field = t.field并在where t.field is not null内部重新编写此查询以防field可以为空,或者在field中完全删除where子句不可为空。

所以这个速度和它一样快。

答案 2 :(得分:-1)

select * from myTable t where t.field1 = 'AAA' and t.field2 in (select max(field2) from myTable where field1= 'AAA');

它可能有帮助。