mysql查询的更好选择

mysql查询的更好选择,mysql,Mysql,我有一个表test1,它的数据如下所示: 现在我不想从test1表中选择2012年生产年份中天数>0的记录,所以我使用了以下查询: select * from test1 where id in (select id from test1 where pyear=2012 and (days<=0 or days is null)) OR id in (select id from test1 where pyear!=2012); 但是当解释上述查询时,它显示了从属子查询 , 有没有

我有一个表test1,它的数据如下所示:

现在我不想从test1表中选择2012年生产年份中天数>0的记录,所以我使用了以下查询:

select * from test1
where id in (select id from test1 where pyear=2012 and 
(days<=0 or days is null)) OR id in (select id from test1 where pyear!=2012);
但是当解释上述查询时,它显示了从属子查询

,

有没有更好的方法来编写这个查询

提前谢谢

select * from test1 where days <= 0 && pyear >= 2012

这将起作用

这将完成以下工作:

select * from test1 where (pyear=2012 and (days<=0 or days is null)) or pyear<>2012
对。有。工会将帮助你:

SELECT * FROM test1 WHERE pyear=2012 AND (days<=0 OR days IS NULL)
UNION
SELECT * FROM test1 WHERE pyear!=2012

一些MySQL旧版本低于4.1,我想不能使用索引,这意味着在使用或在差异列上进行完全扫描,即使有索引列。在这种情况下,应该使用UNION。

此查询仅选择2012条记录,但我也希望选择2013条记录
SELECT * FROM test1 WHERE pyear=2012 AND (days<=0 OR days IS NULL)
UNION
SELECT * FROM test1 WHERE pyear!=2012