MySql'选择'帮助

时间:2010-03-02 09:28:19

标签: php sql mysql database

我有一些桌子。

这些表都有一个共同的列叫做“classified_id”:

   main_table:            cars_table:            
    id (PK) => 4222        id (PK)  => 1021             
  classified_id => 25   classified_id => 25

现在,无论何时执行搜索,我都希望比较任何 main_table.classified_id 是否匹配任何 cars_table.classified_id (在这种情况下)。< / p>

cars_table可能不会返回任何匹配! 每个表中的classified_id是唯一的关系。 我永远不需要将cars_table.classified_id与main_table.classified_id进行比较,但另一种方法是我需要的(main_table.classified_id = cars_table.classified_id)。

我不知道使用什么类型的Join ...有什么帮助吗?左加入?

由于

3 个答案:

答案 0 :(得分:0)

是的,这是一个左连接

这样的东西
SELECT  *
FROM    main_table mt LEFT JOIN
        cars_table ct ON mt.classified_id = ct.classified_id

答案 1 :(得分:0)

SELECT * FROM main_table LEFT JOIN cars_table ON main_table.classified_id = cars_table.classified_id

将返回1- ?? main_table行的副本取决于匹配的cars_table中的数量。如果没有匹配,则cars_table的所有值都为NULL

答案 2 :(得分:0)

我不太确定你在问什么,但假设你正在寻找main_table中符合某些条件的所有记录,并且你想带来cars_table中具有相同classified_id的任何记录作为主表中的任何匹配记录,即使cars_table中没有这样的记录,你应该像这样使用左连接:

SELECT *
FROM main_table AS M
  LEFT JOIN cars_table as C
    ON C.classified_id = M.classified_id
WHERE
  f(M.foo)

如果有一条M记录使得f(M.foo)的计算结果为TRUE,但没有相应的C记录,则M记录仍将出现在结果集中,但所有C字段都将为NULL。

可以在此处找到左外连接的更详尽说明(与左连接相同):

http://en.wikipedia.org/wiki/Left_outer_join#Sample_tables

您需要查看示例数据,以了解它们为左外连接提供的示例:

http://en.wikipedia.org/wiki/Left_outer_join#Sample_tables