我在名为“advertises”的表中有这些值:
id sitecatid locationid
1 12 3
2 12 6
3 12 8
4 12 8
5 12 8
6 10 18
7 13 20
8 14 21
我想返回这样的结果:
sitecatid locationid
12 3
10 6
13 8
14 18
20
21
基本上我只想要具有唯一 sitecatid 的任何记录的第一个实例 和位置ID。
更新:
我尝试了这个查询,但结果不正确:
SELECT DISTINCT sitecatid, locationid
FROM advertisements
WHERE MATCH (sitetitle,sitedescription)
AGAINST ('$q' IN BOOLEAN MODE) AND status='approved'
上述查询的结果:
sitecatid locationid
12 3
12 6
12 8
10 18
14 20
13 21
更新:
我可以对 sitecatid
使用两个查询 One,对 locationid
使用 secend,如下所示:
SELECT DISTINCT sitecatid
FROM advertisements
WHERE MATCH (sitetitle,sitedescription)
AGAINST ('$q' IN BOOLEAN MODE) AND status='approved'
和
SELECT DISTINCT locationid
FROM advertisements
WHERE MATCH (sitetitle,sitedescription)
AGAINST ('$q' IN BOOLEAN MODE) AND status='approved'
但我想对这两个使用一个查询
最佳答案
我认为实现此目的的唯一方法是检索一列中的数据,而不是两列,因为您试图从一行中的不同记录中获取值,我认为这是不可能的。
SELECT 'SITECATID' UNION
SELECT DISTINCT sitecatid
FROM advertisements
WHERE MATCH (sitetitle,sitedescription)
AGAINST ('$q' IN BOOLEAN MODE) AND status='approved' UNION
SELECT 'LOCATIONID' UNION
SELECT DISTINCT locationid
FROM advertisements
WHERE MATCH (sitetitle,sitedescription)
AGAINST ('$q' IN BOOLEAN MODE) AND status='approved';
关于mysql - 使用 DISTINCT 关键字忽略 MySQL select 中的重复条目,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44537946/