我有下表
---------------------------------------
id, type, keyword, default
---------------------------------------
1, 1, mcdonalds, 1
2 1, food, 0
3, 1, drinks, 0
4, 2, vending machine, 1
5, 2, drinks, 0
6, 3, station, 1
7, 3, travel, 0
8 3, train, 0
这背后的想法是我想要一个 serach 查询返回关键字的“唯一”类型(默认行),所以当我搜索麦当劳时,我得到第一行,但是当我搜索食物或饮料时,我也得到第一行.
我已经使用子选择完成了这项工作。
SELECT type, keyword FROM keywords WHERE type IN (SELECT DISTINCT type FROM keywords WHERE keyword like '%?%') AND `default`=1
;
这就像一个魅力,但现在我希望能够提供多个关键字,例如我尝试过的“drinks & food”
SELECT type, keyword FROM keywords WHERE type IN (SELECT DISTINCT type FROM keywords WHERE keyword like '%?%' OR keyword like'%?%') AND `default`=1
;
但是,当我在这种情况下搜索“食物和饮料”时,我会得到“自动售货机”和“麦当劳”。然而,自动售货机只有一个相关的关键字“饮料”(它不提供食物)所以我不想在我的结果中出现那个。
当我做'AND'而不是OR like时,我根本没有得到任何结果(因为一行不能同时具有两个值)。
有人对我如何解决这个问题有任何建议吗?