【发布时间】:2017-03-29 01:23:01
【问题描述】:
临时订购表
temp_id series_id news_ticket_breakdown_id quantity expiry_time
58db09bba25b4 2 2 2 1490750973
58db09bba25b4 2 4 1 1490750973
新闻项目表
news_id series_id news_title
26 2 GENERIC TICKETING
27 2 GENERIC TICKETING
当我对 series_id 进行左连接时,我返回 4 行,我只想要 2 行。我不确定如何将连接的行数限制为一行。
当前查询
SELECT
*
FROM
ticket_ordering_temp
LEFT JOIN
news_items
on
( news_items.series_id = SELECT
DISTINCT(event_id)
FROM
news_items
where
series_id=ticket_ordering_temp.series_id
)
where
temp_id='58db09bba25b4''
期望的结果 我只想要表 2 中的 1 行,而不是如上所述加入的 2 行
temp_id series_id news_ticket_breakdown_id quantity expiry_time news_title
58db09bba25b4 2 2 2 1490750973 GENERIC TICKETING
58db09bba25b4 2 4 1 1490750973 GENERIC TICKETING
【问题讨论】:
-
你的
JOIN条件是什么? -
我在表定义或示例数据中都没有看到
event_id。 -
你为什么要尝试左连接而不是连接?
-
这在现代数据库引擎中通过横向连接/应用很容易,自 sql:1999 以来这一直是 ansi 标准的一部分。可悲的是,MySql 不再是真正的现代数据库引擎。它已经落后了十多年,没有与其他主要参与者并驾齐驱。
-
你想要哪个 news_id 值? 26 还是 27?这对您来说似乎无关紧要,因为您的两个样本都具有相同的
GENERIC TICKETINGnews_title 值,但数据库不知道这一点。从数据库的角度来看,这些仍然是 不同 记录,它们都与您的连接匹配,它只查看 series_id 值。