如何根据where子句从两个表中进行选择

时间:2014-10-25 14:11:55

标签: mysql sql

我正在尝试从两个表中进行选择并将它们连接到具有相同ID的位置,但我的查询似乎错误,它搜索的时间太长以至于它崩溃了工作台。

   SELECT s.id,
          s.title,
          s.votes,
          t.*
     FROM movies_two.movie s, 
          movies_one.movie t 
LEFT JOIN movies_two.movie 
       ON movies_one.id = s.id -- not sure which join to use
    WHERE s.votes = -1 AND
          t.numofvotes > 0;

我有两个包含类似数据的数据库。我正在尝试从movies_onemovies_two选择具有相同ID且movies_one具有votes = -1movies_two具有movies > 0 <的行/ p>

3 个答案:

答案 0 :(得分:2)

你不需要left join。你也不需要cross join(这是逗号在from子句中的作用。

我想你想要这样的东西:

SELECT *
FROM movies_one.movie m1 JOIN
     movies_two.movie m2
     ON m1.id = m2.id AND
        m1.votes = -1 AND 
        m2.numofvotes > 0;

我还建议您使用表别名缩写的表别名。您对魔杖和查询的文字描述完全不同。

答案 1 :(得分:1)

SELECT  s.id ,s.title, s.votes, t.*  
FROM movies_two.movie s 
JOIN movies_one.movie t
ON t.id = s.id  
WHERE s.votes =-1  
AND t.numofvotes >0;

没关系。 当您只想要movies_two.movi​​e中的数据时,您可以使用左连接 - 左表。但在这里你需要两个表的数据。

答案 2 :(得分:0)

试试这个:

SELECT * 
  FROM movies_one.movie 
 WHERE numofvotes = -1
 UNION
SELECT * 
  FROM movies_two.movie 
 WHERE votes > 0