假设我有一个包含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'
我需要做的是对检查每个品牌的所有行进行排序。
答案 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