我的表结构如下所示,
现在我想分组展示产品。首先,我将展示一个类别为手机的盒子。还有Android手机或任何特定品牌手机的下一个盒子。
我使用这个逻辑查询数据库,
SELECT * FROM `database`.`tablename` WHERE `tag` LIKE '%Mobile%'
这样一般会回归手机。
现在再次
SELECT * FROM `database`.`tablename` WHERE `tag` LIKE '%Samsung%'
此查询适用于品牌三星的整理。
现在问题定义是我需要省略先前在上一个查询中显示的结果。我的意思是当我查询品牌三星时,不能显示第一个查询中显示的移动模型。由于查询单独运行,我不知道如何执行此操作。有什么想法吗?
答案 0 :(得分:0)
试试这个:
SELECT * FROM `database`.`tablename` WHERE `tag` LIKE '%Samsung%' AND `tag` NOT LIKE '%Mobile%'
或者您可以尝试这样的事情:
SELECT * FROM `database`.`tablename` GROUP BY tag
使用PHP对标签进行排序
答案 1 :(得分:0)
您可以使用MINUS获得此结果。不幸的是我们在Mysql上没有它,但您可以使用以下内容:
SELECT DISTINCT `tag`
FROM `database`.`tablename` a LEFT JOIN `database`.`tablename` b USING (`tag`)
WHERE `tag` IS NULL
答案 2 :(得分:0)
你可以做到
SELECT *
FROM `database`.`tablename`
WHERE `tag` LIKE '%Samsung%'
AND `ID` NOT IN (SELECT `ID`
FROM `database`.`tablename`
WHERE `tag` LIKE '%Mobile%')
或只是
SELECT *
FROM `database`.`tablename`
WHERE `tag` LIKE '%Samsung%'
AND `tag` NOT LIKE '%Mobile%'
但请注意您的数据未规范化(具体为tag
列)。请查看Third normal form和Boyce–Codd normal form。