用mysql从多个表中选择

时间:2011-05-19 13:23:51

标签: php mysql

我前几天设置了我的查询

$query = "SELECT card_id,title,description,meta_description,seo_keywords,price 
FROM cards,card_cheapest order by card_id";

如您所见,我从表card_id,title,description,meta_description,seo_keywords中选择cards,价格来自cheapest_card。它们都有card_id共同(在两个表中)。但是,我遇到了一个问题。当我在navicat lite中运行查询时,收到错误"card_id is ambiguous"。我做错了吗?

3 个答案:

答案 0 :(得分:4)

当两个或多个表的列名称相同时,您必须限定您希望该列所在的表。

即:

$query = "SELECT cards.card_id,title,description,meta_description,seo_keywords,price
FROM cards,card_cheapest order by card_id";

此外,你真的想以这种方式运行查询,没有WHERE / JOIN子句来定义如何加入这两个表吗?

$query = "SELECT cards.card_id,title,description,meta_description,seo_keywords,price 
FROM cards,card_cheapest WHERE cards.card_id = card_cheapest.card_id 
ORDER BY card_id";

答案 1 :(得分:1)

如果您选择的两个表中具有相同的列名,则必须在SELECT中为其中一个表名添加前缀(如果它是相同的数据则无关紧要) )

,例如SELECT cards.card_id, ...

编辑:然而,cularis的答案比我的解释更为明确,如果你想获得正确的结果,请注意加入两个card_id列。

答案 2 :(得分:0)

当您运行从具有共享字段名称的多个表中获取信息的查询时,您需要指定要从哪个表中提取哪个字段。您可以通过在字段名称前指定表名来执行此操作。

在您的情况下,您有两种选择:

cards.card_id或card_cheapest.card_id。

我也同意@cularis,你可能更喜欢加入,但你仍然需要指定你想要选择的card_id:来自card或card_cheapest的那个。