Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/59.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_Join - Fatal编程技术网

MySQL:选择剩余的行

MySQL:选择剩余的行,sql,mysql,join,Sql,Mysql,Join,我到处找这个,但似乎找不到解决办法。也许我用错了词。不管怎样,我都要求助于可靠的好上司来帮助我找到答案 我有两个表,我们称它们为“工具”和“安装” tools = id, name, version installs = id, tool_id, user_id “工具”表记录可用的工具,然后由用户安装并记录在“安装”表中。选择已安装的工具非常简单: SELECT tools.name FROM tools LEFT JOIN installs ON tools.id = inst

我到处找这个,但似乎找不到解决办法。也许我用错了词。不管怎样,我都要求助于可靠的好上司来帮助我找到答案

我有两个表,我们称它们为“工具”和“安装”

tools = id, name, version
installs = id, tool_id, user_id
“工具”表记录可用的工具,然后由用户安装并记录在“安装”表中。选择已安装的工具非常简单:

SELECT tools.name
  FROM tools
  LEFT JOIN installs
  ON tools.id = installs.tool_id
  WHERE user_id = 99 ;
我如何选择剩余的工具——用户尚未安装的工具#99

如果这是显而易见的,我很抱歉,但我似乎无法理解!谢谢你的帮助

使用:

   SELECT t.name
     FROM TOOLS t
LEFT JOIN INSTALLS i ON i.tool_id = t.id
                    AND i.user_id = 99
    WHERE i.id IS NULL
或者,您可以使用
不存在

SELECT t.name
  FROM TOOLS t
 WHERE NOT EXISTS(SELECT NULL 
                    FROM INSTALLS i
                   WHERE i.tool_id = t.id
                     AND i.user_id = 99)
…或
不在
中:

SELECT t.name
  FROM TOOLS t
 WHERE t.id NOT IN (SELECT i.tool_id
                      FROM INSTALLS i
                     WHERE i.user_id = 99)
在这三个选项中,
LEFT JOIN/IS NULL
是MySQL上最有效的