Php 在多个查询中显示非重复项
我的桌子结构是这样的Php 在多个查询中显示非重复项,php,mysql,Php,Mysql,我的桌子结构是这样的 ID-主索引,AI 标题-产品或任何项目的标题 标签-这将有关于产品或项目的标签。用逗号分隔。例如,如果产品是Android手机,则标签可能是Android、Mobile、[品牌]、[操作系统] 现在我想分组展示产品。像第一次一样,我将显示一个带有手机类别的框。下一个盒子是安卓手机或任何特定品牌的手机 我用这个逻辑查询数据库 SELECT * FROM `database`.`tablename` WHERE `tag` LIKE '%Mobile%' 因此,这将返回一般
SELECT * FROM `database`.`tablename` WHERE `tag` LIKE '%Mobile%'
因此,这将返回一般的手机
现在再次
SELECT * FROM `database`.`tablename` WHERE `tag` LIKE '%Samsung%'
此查询用于按三星品牌分类
现在问题的定义是,我需要忽略以前在查询中显示的结果。我的意思是,当我查询三星品牌时,第一次查询中显示的手机型号不得显示。由于查询是单独运行的,我不知道如何才能做到这一点。有什么想法吗?试试这个:
SELECT * FROM `database`.`tablename` WHERE `tag` LIKE '%Samsung%' AND `tag` NOT LIKE '%Mobile%'
或者你可以试试这样:
SELECT * FROM `database`.`tablename` GROUP BY tag
然后用PHP对标签排序,你可以用减号得到这个结果。不幸的是,我们在Mysql上没有此功能,但您可以使用以下功能:
SELECT DISTINCT `tag`
FROM `database`.`tablename` a LEFT JOIN `database`.`tablename` b USING (`tag`)
WHERE `tag` IS NULL
你可以
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%'
但请注意,您的数据没有标准化(具体是
标记
列)。查看和。我无法使用此选项,因为页面中显示的组数将以n个数字表示,并且每个查询都将动态进行。