Ada*_*dam 30 mysql union distinct
我有两个选择,我目前正在成功运行UNION.
(SELECT a.user_id,a.updatecontents as city,b.country
FROM userprofiletemp AS a
LEFT JOIN userattributes AS b ON a.user_id=b.user_id
WHERE typeofupdate='city')
UNION DISTINCT
(SELECT a.user_id,c.city,c.country
FROM userverify AS a
LEFT JOIN userlogin AS b ON a.user_id=b.user_id
LEFT JOIN userattributes AS c ON a.user_id=c.user_id
WHERE b.active=1 AND a.verifycity=0);
Run Code Online (Sandbox Code Playgroud)
结果如下:
100 Melbourne Australia
200 NewYork America
300 Tokyo Japan
100 Sydney Australia
Run Code Online (Sandbox Code Playgroud)
catch是查询将带来重复的user_id(在本例中为100).第一个查询中的详细信息先于我,如果在第二个查询中重复user_id,则不需要它.
有没有办法让UNION成为列上的DISTINCT?在这种情况下user_id?有没有办法进行上述调用而不是获取重复的user_id - 删除第二个.我应该以不同的方式重新编写查询,而不是使用UNION.真的希望它作为一个查询 - 如果需要,我可以使用SELECT和PHP来清除重复.
亚当
zer*_*kms 35
不可以.您无法指定需要区分的确切字段.它只适用于整行.
至于您的问题 - 只需将查询作为子查询和外部查询 GROUP BY
user_id
SELECT * FROM
(SELECT a.user_id,a.updatecontents as city,b.country
FROM userprofiletemp AS a
LEFT JOIN userattributes AS b ON a.user_id=b.user_id
WHERE typeofupdate='city')
UNION DISTINCT
(SELECT a.user_id,c.city,c.country
FROM userverify AS a
LEFT JOIN userlogin AS b ON a.user_id=b.user_id
LEFT JOIN userattributes AS c ON a.user_id=c.user_id
WHERE b.active=1 AND a.verifycity=0) x
GROUP BY user_id
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
61391 次 |
最近记录: |