Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/56.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/82.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Mysql 连接SQL中的两个表并返回包含空值的结果集_Mysql_Sql_Sql Server - Fatal编程技术网

Mysql 连接SQL中的两个表并返回包含空值的结果集

Mysql 连接SQL中的两个表并返回包含空值的结果集,mysql,sql,sql-server,Mysql,Sql,Sql Server,我有投票网站,每个网站都是表格中的一行。现在在我的web服务器上,我需要加载所有站点,并检查每个站点是否已投票(投票表示站点id存在于其他表的行中) 因此,如果站点id=5且callback\u voces中存在具有站点id5的行,则查询将该id添加到“已投票的”,否则该id将为空 示例: SELECT sites.*, callback_votes.site_id AS voted FROM sites INNER JOIN callback_votes ON callback_votes.

我有投票网站,每个网站都是表格中的一行。现在在我的web服务器上,我需要加载所有站点,并检查每个站点是否已投票(投票表示站点id存在于其他表的行中)

因此,如果站点id=5且
callback\u voces
中存在具有
站点id
5的行,则查询将该id添加到
“已投票的”
,否则该id将为空

示例:

SELECT sites.*, callback_votes.site_id AS voted
FROM sites 
INNER JOIN callback_votes ON callback_votes.site_id = sites.id;
但是,如果我在
回调投票
中没有任何行,该查询将不会返回任何数据。我想做的是,我仍然希望返回
站点。*
,在这种情况下,
投票
为空


这是可能的还是有其他方法?

只需使用左连接而不是内部连接,即可从站点获取所有数据,如果不在回调投票中,则为空值

SELECT sites.*, callback_votes.site_id AS voted
    FROM sites 
    LEFT JOIN callback_votes ON callback_votes.site_id = sites.id;

尝试左连接

选择站点。*,回调\u投票。站点\u投票id,
当ISNULL(回调\u投票。站点\u id,“”)为“”时,则为“否”,否则为“是”,结尾为\u站点\u投票
从站点左侧加入callback\u voces上的callback\u voces.site\u id=sites.id



案例适用于SQL Server,如果用于MYSQL,则可以使用。

您使用的是
内部联接
,它将返回每个表中有匹配行的行,您需要的是
左联接

使用
LEFT JOIN
的简单术语意味着“从左表中选择所有行,其中右表中没有匹配行,然后返回null”

以下是您的查询的外观:

SELECT sites.*, callback_votes.site_id AS voted
FROM sites 
LEFT JOIN callback_votes ON callback_votes.site_id = sites.id;
可能重复的