我有一些桌子。
这些表都有一个共同的列叫做“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 ...有什么帮助吗?左加入?
由于
答案 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
您需要查看示例数据,以了解它们为左外连接提供的示例: