不知道我是否错过了什么:
$sql = "SELECT DISTINCT usr.id,
CONCAT(usr.username, '".PHP_EOL."' ) as username
FROM #__ads AS a
RIGHT JOIN #__users
WHERE gid= '19' AS usr
ON usr.id = a.userid
ORDER BY usr.username";
当我删除WHERE gid = '19'部分时,它是否在错误的地方?gid列只存在于__users表中。
谢谢!
编辑:明白了,只需要把Where子句放在ORDER BY前面。
where
子句必须出现在所有连接之后:
$sql = "SELECT DISTINCT usr.id
, CONCAT(usr.username, '".PHP_EOL."' ) as username
FROM #__ads AS a
RIGHT JOIN #__users AS usr
ON usr.id = a.userid
WHERE gid= '19'
ORDER BY usr.username";
假设您只需要#__users
中usr.gid= '19'
SELECT DISTINCT usr.id,
CONCAT(usr.username, '".PHP_EOL."' ) as username
FROM #__ads AS a
RIGHT JOIN #__users as usr ON usr.id = a.userid
WHERE usr.gid= '19'
ORDER BY usr.username
另一种可能性SELECT DISTINCT usr.id,
CONCAT(usr.username, '".PHP_EOL."' ) as username
FROM #__ads AS a
RIGHT JOIN #__users as usr ON usr.id = a.userid
AND usr.gid= '19'
ORDER BY usr.username
将为您提供#__users
中的所有行,但只加入与usr.gid= '19'
匹配的行