2013-03-03 102 views
1

我试图排除从这个基本的查询结果:需要更具体的MySQL查询

SELECT PageID, PlanID 
FROM table 
WHERE PlanID = 1 
AND PageID in !=0 

这是一个映射表,加入像博客,标​​签,标签,图像等物体..

我的问题是有其他的结果,此查询上拿起..

PlanID = 1 - PageID = 234 - OtherID = 0 
PlanID = 1 - PageID = 234 - OtherID = 456 

在现实中,这是我想写什么:

SELECT PageID, PlanID 
FROM table 
WHERE PlanID = 1 
AND PageID !=0 
AND OtherID = 0 
AND OtherID = 0 
AND OtherID = 0 
AND OtherID = 0 
AND OtherID = 0 

我不想一遍又一遍写很多'OtherID's = 0', 因为这是一个动态查询,'PageID'可以是任何一个'OtherID'。

有没有办法排除所有的“OtherID的具有把它们写出来, 出来或有做一些类型的动态在我的代码,与切换!= 0 ID” OtherID的= 0

喜欢的东西:

SELECT PageID, PlanID 
FROM table 
WHERE PlanID = 1 
AND PageID !=0 
AND AllOtherFields = 0 

我不是如何申请不同的查询只是说的pageID = 0和planID = 1 或者只是零的所有,我不是找田..?

+0

你能张贴您正在使用的实际表结构?我对_pageID感到困惑,可能是其他ID_部分中的任何一个... – 2013-03-03 20:16:03

+0

PageID是传递给函数的参数变量。在任何时候,我都试图找到两个加入的对象,也有一个planID为1.所以我遇到的问题是写出所有其他字段名并确保它们等于0。不想写出其他字段名称..我宁愿有一个更明确的查询,忽略表中的其他字段名称。 – Kusanagi 2013-03-03 20:30:49

回答

0

这是你想要的吗?

SELECT PageID, PlanID 
FROM table 
WHERE PlanID = 1 and 
     PageID <> 0 and 
     OtherId <> 0 

注意:您可以使用!=<>。它们是等价的。

如果要检查所有其他字段为0,你可以这样做:

SELECT PageID, PlanID 
FROM table 
WHERE PlanID = 1 and 
     PageID <> 0 and 
     0 not in (OtherId1, otherid2, otherid3, . . .) 
+0

是的,上面的工作是我想要的。但是,它仍然迫使我写出字段名。 0不在(OtherId1,otherid2,otherid3,。。。) 相同 AND OtherID = 0 AND OtherID = 0 AND OtherID = 0 – Kusanagi 2013-03-03 20:26:45

+0

@Kusanagi。 。 。是的,你必须写出字段。如果这是一个问题,请执行以下操作:'从information_schema.columns中选择column_name,其中table_name ='table'',将结果转储到Excel中,使用逗号将其格式化,然后从该字符串中创建查询。 – 2013-03-03 20:28:40