mysql - JOIN(表名)

时间:2011-01-16 04:37:09

标签: mysql sql join left-join

我的数据库包含一个名为sites的表(其中包含一些字段,包括site_ID字段),以及来自sites表的每个site_ID条目的一组表。

所以db看起来像:

- sites [site_ID, blah]
- site_1_articles [title, content]
- site_1_comments [author, comment]
- site_2_articles [title, content]
- site_2_comments [author, comment]
- site_3_articles [title, content]
- site_3_comments [author, comment]
etc...

我有一个select查询,它从sites表中提取所有字段:

SELECT * FROM sites
WHERE ....

如何从相应的title表中获取site_[site_ID]_articles字段? 我认为我在使用JOIN的相同查询中需要这个,因为表的数量非常大(超过1000),并且执行1000次选择可能不是这样做的方法:)

4 个答案:

答案 0 :(得分:3)

不,您不能动态引用表(除非使用存储过程来创建预准备语句)

你应该设计你的数据库,挖出一个site_articles表,然后在你的查询中存储一个site_id列:

SELECT *
FROM sites s JOIN site_articles sa ON s.site_id = sa.site_id
WHERE ....

答案 1 :(得分:1)

您可以加入多个条件,或将其添加到WHERE子句

...
ON (blah = boo) AND (some_id = matching_field_in_second_table)
...

...
WHERE (some_id = matching_field_in_second_table)

答案 2 :(得分:1)

SELECT blah, some_id, second_table.some_field FROM first_table
LEFT JOIN second_table
ON second_table.some_field = some_id
WHERE ....

这就是你想要的吗?

答案 3 :(得分:1)

最好是重新设计数据库。一个表文章,其中id列作为主键,表注释带有article_id列。然后你加入吧。