如何在第二次查询中使用MySQL值?

如何在第二次查询中使用MySQL值?,mysql,union,Mysql,Union,我如何做到这一点: SELECT Board_id FROM topic WHERE Value1='".$value2."' UNION SELECT Name FROM Boards WHERE Id=Board_id 我应该使用UNION吗?或者我应该使用两个不同的查询?什么更好?从Board中选择名称,其中Id=从主题中选择Board\u Id,其中Value1='。$value2.使用连接: SELECT t.Board_id, B.Name FROM topic t left j

我如何做到这一点:

SELECT Board_id FROM topic WHERE Value1='".$value2."' UNION SELECT Name FROM Boards WHERE Id=Board_id
我应该使用UNION吗?或者我应该使用两个不同的查询?什么更好?

从Board中选择名称,其中Id=从主题中选择Board\u Id,其中Value1='。$value2.

使用连接:


SELECT t.Board_id, B.Name FROM topic t
left join Boards B ON (B.id = t.Board_id)
where t.SELECT Board_id FROM topic = $value1
select name, board_id from boards b inner join topic t on t.board_id=b.id
where t.value1='VALUE1'
请参阅关于W3学校的SQL join教程:

注意,如果您使用的是PHP,那么您的代码有SQL注入的风险:

有许多方法可以防止这种情况:

$sql = "SELECT board_id, name from boards b inner join topic t on " .
   " t.board_id=b.id " .
   " where t.value1='" . mysql_real_escape_string($value2) . "'";
最好使用参数化查询,但这取决于您使用的是PHP的MySQL还是MySQLi库。

我想您需要:

SELECT Name 
FROM Boards 
WHERE Id
    = ( SELECT Board_id 
         FROM topic 
         WHERE Value1 =  $value2
      ) 

我建议您使用以下ID左键加入Boards表:

SELECT topic.Board_id, Boards.name 
FROM topic 
LEFT JOIN Boards 
ON topic.Board_id = Boards.id 
WHERE topic.Value1='".$value2."' 

这样做更快,还是第二个查询更好?这样做更快,还是第二个查询更好?与使用两个不同的查询相比,一个查询通常更好。这样做更快,还是第二个查询更好?您希望数据库完成其设计的工作,因此,如果您在topic.board_id和boards.id上有一个索引,这可能是您的主键,这可能是最快的方法-取决于db实现,其他方法可能也同样快。另一个观察结果是,如果您使用PHP,您的代码有SQL注入的风险。