MYSQL - 如何比较多个列以匹配类别

时间:2012-06-06 19:38:56

标签: php mysql multiple-columns

我有一个名为PRODUCTS的表,其中有3列用于三个不同的类别,我想选择所有3列中任何一个都具有3个值的产品。 我想要做的是显示基于3个类别中的任何一个的相关产品。

示例表:

  

ID,名称,CAT1,CAT2,CAT3

     

1,键盘,2,8,4
  2,鼠标,2,NULL,NULL
  3,Monitor,16,2,NULL

让我知道我正在查看ITEM id = 1,我想查询以显示3列中任何一个中具有类别编号2的其他2个产品。

我该怎么做?

非常感谢, 安德烈

2 个答案:

答案 0 :(得分:2)

SELECT * FROM table_name WHERE id != 1 AND (cat1 = 2 OR cat2 = 2 OR cat3 = 2)

答案 1 :(得分:1)

那么,对于任何给定的ID,在其类别中找到与所选类别具有相同类别的其他“兄弟姐妹”?

选择id为selected_id,p1.cat为p1_cat,p2.cat为p2_cat,p3.cat为p3_cat
从产品p1,产品p2,产品p3
其中
p1.cat = p2.cat

p1.cat = p3.cat
//以及其他各种资格,这不是重复的 p1.id!= p2.id
p1.id!= p3.id
p2.id!= p3.id

//你也可以join products p3 on p3.cat = p1.cat而不是{{1}} //我这么做的冗长方式

顺便说一句,这在性能方面是个坏主意。最好以编程方式完成而不是在SQL中。任何时候你都在处理像这样的游标问题,只需要在代码中使用数组,而不是在SQL中