mysql - 限制左连接?

标签 mysql sql

您好,我有一个从搜索中提取结果的查询,但我希望将左连接结果限制为 1

这是左连接:

LEFT JOIN #__ezrealty_siteplan AS sp ON sp.listing_id = a.id "

我尝试过的

 LEFT JOIN (SELECT * FROM jos_ezrealty LEFT JOIN jos_ezrealty_siteplan AS sp ON (sp.listing_id =jos_ezrealty.id ) LIMIT 1) AS sp ON (sp.listing_id=jos_ezrealty.id)

整个查询:

   $query="SELECT a.*, cc.name AS category, ee.ezcity AS proploc, dd.name AS statename, bb.name AS countryname, 
u.logo_image AS logo_image, u.mid AS mid, u.dealer_name AS dealer_name, u.dealer_company AS dealer_company, 
u.dealer_phone AS dealer_phone, u.dealer_mobile AS dealer_mobile, u.published AS dealerpublished, sp.tenant AS tenant, sp.spacenum AS spacenum, sp.sf AS sf, sp.image AS tenantimage,
u.dealer_type AS dealer_type FROM #__ezrealty as a"
    . "\n LEFT JOIN #__ezrealty_catg AS cc ON cc.id = a.cid"
    . "\n LEFT JOIN #__ezrealty_locality AS ee ON ee.id = a.locid"
    . "\n LEFT JOIN #__ezrealty_state AS dd ON dd.id = a.stid"
    . "\n LEFT JOIN #__ezrealty_country AS bb ON bb.id = a.cnid"
    . "\n LEFT JOIN #__ezrealty_profile AS u ON u.mid = a.owner"
    . "\n LEFT JOIN #__ezrealty_siteplan AS sp ON sp.listing_id = a.id "
    . "\n WHERE $extrastring AND a.published = '1' $vacant AND cc.access <= $my->gid $wheres "
    . $order.' LIMIT '.$pageNav->limitstart.', '.$pageNav->limit;

最佳答案

在 SQL Server 中,您可以使用 CROSS APPLY。在其他 DBMS 中,您可以使用分区(窗口函数 ROW_NUMBER)。

对于 MySQL,一种解决方案是使用子查询获取 LIMIT 1,然后将其连接到表中,例如

select a.col1, a.col2, a.col3, b.col1, b.col2
from
(
select a.col1, a.col2, a.col3, (select b.id as b_id from tbl_b b where b.a_id=a.id limit 1)
from tbl_a a
) a
left join tbl_b b on b.id=a.b_id

关于mysql - 限制左连接?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5696512/

相关文章:

MySQL 连接超时问题 - 使用 Hibernate 和 ORM 的 Tomcat 上的 Grails 应用程序

sql - 如何取消透视同一个表中的多列

mysql - 如何减慢我的查询速度

sql - 两列上的复合非空约束

sql - 计算组内的百分比

Mysql[5.7]嵌套选择查询无法识别父表

mysql - 计算多次订购的产品

php - 如何比较两个MySQL表并显示差异?

java - Hibernate onetomany 中的外键未更新

MySQL从多个子行查询相关实体到json数组中