我从桌子上有两列; fromid 和 toid ,其中包含相同的用户ID。
我还有一个下拉选择框,可以从这两列中选择所有ID。
我的问题是,下拉列表会选择所有用户,但当两个用户同时位于两列时也会重复。
我想要的是只选择一个用户一次,如果用户出现在两列中,则给其中一列优先级或MAX(就是它?)。这是我到目前为止的代码:
$sql="
SELECT
DISTINCT u.".($config->realnames ? "name" : "username")." AS displayname,
u.id
FROM
(#__users AS u
INNER JOIN
#__uddeim AS um
ON
u.id=um.fromid)
WHERE
um.toid=".(int)$myself."
AND
um.totrash=0
AND
`um`.`delayed`=0".$filter."
UNION ALL
SELECT
DISTINCT u.".($config->realnames ? "name" : "username")." AS displayname,
u.id
FROM
(#__users AS u
INNER JOIN
#__uddeim AS um
ON
u.id=um.toid)
WHERE
um.fromid=".(int)$myself."
AND
um.totrashoutbox=0".$filter."
AND um.systemflag=0";
我做了什么 -
我尝试使用计数查询,但这不起作用:
if (count ($row->displayname > 1))
echo "duplicate rows";
答案 0 :(得分:3)
尝试将查询中的UNION ALL
更改为UNION
。前者保留两个数据集中的所有行;后者消除了重复 - 它是UNION DISTINCT
的缩写形式。