Mysql:使用部分返回的数据行来获取更多数据

时间:2013-06-13 19:04:02

标签: mysql

我正在将一个项目的ID传递给我的模型,我想在查询中使用此项目ID来查找它的area_id,并从那里返回具有相同area_id的任何其他项目。我不知道怎么做,我查看了子查询,但这对我来说似乎不对。这是我的结构。

档案:

ID -- Title -- Area_id(FK) -- Description -- Date_added

区域:

ID -- Place -- Date_Added

感谢您的帮助

强尼

2 个答案:

答案 0 :(得分:1)

首先,选择你的项目:

SELECT Area_id FROM Item i WHERE ...

所以你得到一个区域ID

现在必须获取给定区域中的所有项目:

SELECT * From Item WHERE Area_id IN (...)

一起获取两个查询:

SELECT * From Item WHERE Area_id IN (SELECT Area_id FROM Item i WHERE ...)

已经完成了!

请注意,子查询对性能不利,因此我建议您在数据库增长时进行基准测试并密切关注此查询,然后在遇到性能问题时对其进行优化。

答案 1 :(得分:0)

试试这个:

SELECT i2.*
FROM item i1, item i2
WHERE i1.id = :input_item_id
AND i1.area_id = i2.area_id

这就是所谓的“自联接”,应该比使用子查询的解决方案更有效。