【问题标题】:LEFT JOIN without LIMIT existing in query查询中不存在 LIMIT 的 LEFT JOIN
【发布时间】:2016-03-12 20:48:32
【问题描述】:

我有以下表格:

投票

id | question   | votes
1  | Your name? | 2

poll_answers

id | id_poll | answer
1  | 1       | John
2  | 1       | Jorge
3  | 1       | Charlie

我想做一个SELECT 来返回poll 数据和poll_answers 数据,其中id_poll 对应于id 表上的id

所以,我做到了:

SELECT question, votes, answer
FROM poll
LEFT JOIN poll_answers
ON poll.id = id_poll
WHERE poll.id = '1'
LIMIT 1

预期的输出将返回poll 数据和poll_answers 表上的三个答案,但是,输出是:

array(1) { [0]=> array(3) { ["question"]=> string(10) "你的名字?" ["votes"]=> string(1) "2" ["answer"]=> string(5) "查理" } }

我想要什么:

array(1) { [0]=> array(3) { ["question"]=> string(10) "你的名字?" ["votes"]=> string(1) "2" ["answer"]=> string(7) "查理" ["answer"]=> string(5) "Jorge" ["answer"]=> string(4) "约翰" } }

如何做到这一点,在主查询上使用LIMIT,但在LEFT JOIN 上不使用LIMIT

【问题讨论】:

  • 我不确定您对 主查询的限制 是什么意思;使用WHERE poll.id = '1',您已经将poll 表中的结果数限制为1。所以据我所知,您根本不需要LIMIT
  • 我编辑了我的问题,我理解他们的想法,但是,使用LIMIT 我们没有更多的性能?

标签: php mysql join left-join inner-join


【解决方案1】:

我想你想要聚合:

SELECT p.question, p.votes, GROUP_CONCAT(pa.answer) as answer
FROM poll p LEFT JOIN
     poll_answers pa
     ON p.id = pa.id_poll
WHERE p.id = 1
GROUP BY p.id;

【讨论】:

    猜你喜欢
    • 2012-05-14
    • 2014-09-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-03-16
    • 1970-01-01
    • 2017-04-25
    • 1970-01-01
    相关资源
    最近更新 更多