2012-03-16 52 views
0

我从名为people的数据库中提取用户标识并给它一个$ userid变量。相同的用户标识符有时与另一个名为info的表相关联。有时会有一个匹配的用户标识,有时该用户标识不与信息表关联。当我执行以下查询时,当people表中的用户标识在info表中没有匹配的用户标识时,该功能将被跳过。有没有找到找不到匹配结果的方法?当sql查询找不到匹配时返回结果

$club_query = $wpdb->get_results($wpdb->prepare("SELECT clubs FROM info WHERE userid = '$userid' LIMIT 1")); 

如果俱乐部在结果中,那么执行一个功能。

任何帮助表示赞赏。

回答

1

有几个肮脏的黑客我用这种东西。一种是使用MIN(clubs)代替clubs,因为如果没有行,然后MIN(...)回报NULL

SELECT MIN(clubs) clubs FROM info WHERE userid = ... 

另一种是用一个RIGHT JOIN (SELECT 1) t

SELECT info.clubs FROM info RIGHT JOIN (SELECT 1) t ON info.userid = ... 

两种方法的工作,但也存在一些缺点/局限性。

编辑补充:刚刚发生,我现在另一种方法是使用在该领域列表的子查询:

SELECT (SELECT clubs FROM info WHERE userid = ...) clubs; 

也转换一个空结果集到NULL。这也有一些限制。

+0

采取的一点。谢谢! – 2012-03-16 23:51:03

+0

感谢您的回复。提到null让我怀疑查询是否返回null的结果,而且确实如此。所以现在一切都很好。非常感谢。 – 2012-03-17 00:24:13

相关问题