如何将(mysql)行与一个字段以及另一个不匹配的字段匹配

时间:2011-05-15 00:55:48

标签: mysql sql

假设我有一个包含4个字段的MySQL表:

ID | ONE | TWO | THREE

我需要做一个查询,在最终结果中,将显示两行。我需要字段'ONE'来匹配。两者都说'小工具'。

然后,一行的字段'TWO'应与'MFG'匹配,另一行的字段'TWO'应为'MFG'以外的任何内容。例如:

ID | ONE | TWO | THREE
-----------------------
1  | WID | MFG | sthg
2  | WID | STR | stes

好的,也许这会有所帮助..

这是我到目前为止的陈述。

SELECT * 
FROM cs_coupons 
WHERE brand='Zantac'
  AND product='Heartburn Relief 24ct +'
  AND type='MFG'

 UNION 

SELECT * 
FROM cs_coupons 
WHERE brand='Zantac'
  AND product='Heartburn Relief 24ct +'
  AND type != 'MFG'

我需要做的是对检查每个品牌的所有行进行排序。

2 个答案:

答案 0 :(得分:2)

((SELECT * FROM mytable WHERE ONE='WID' AND TWO='MFG' LIMIT 1)
UNION
(SELECT * FROM mytable WHERE ONE='WID' AND TWO != 'MFG' LIMIT 1) );

第一个查询返回WIG&amp ;; MFG,第二个查询返回一个记录与WIG& !MFG。你去吧。

但我认为很可能是你误解了这个计划。如果有多个WIG&记录,您将无法确定将选择哪条记录。 MFG。

答案 1 :(得分:0)

也许是这样的:

SELECT *
FROM cs_coupons
WHERE ID IN (
  SELECT MIN(ID) AS ID
  FROM cs_coupons 
  WHERE type='MFG'
  GROUP BY brand, product

  UNION ALL

  SELECT (MIN(ID) AS ID
  FROM cs_coupons 
  WHERE type != 'MFG'
  GROUP BY brand, product
) x
ORDER BY brand, product, type = 'MFG' DESC