选择时如何跳过匹配数据

时间:2014-07-12 17:35:54

标签: php mysql sql

我的数据库中有两个表 -

第一桌命名区域:

id name
1  a
2  b
3  c

第二表命名数据:

id name area_id end_date
1   a1   1,2     2014-07-14 09:50:00

我想从第一个表中选择行,只有当我的第二个表的 area_id 设置中 id 不存在且 end_date 大于或等于当前日期。

我的查询(不工作) -

select a.* from area as a  where a.id NOT IN (
            SELECT find_in_Set(area_id) FROM data
                WHERE date(end_date)>=CURRENT_DATE()
        )

1 个答案:

答案 0 :(得分:0)

如果我正确解释您的问题,则此查询的结果应为

id | name
---------
 3 | c

然后你可以通过一点修改得到你的结果。你忘了应该在套装中找到的针:

SELECT a.* 
FROM area as a  
WHERE a.id NOT IN (
    SELECT FIND_IN_SET(a.id, area_id) FROM data    -- you forgot the needle
            WHERE date(end_date) >= CURRENT_DATE()
)

但是如果可以的话,我建议你遵循juergen d的好建议并改变表结构。