gpt4 book ai didi

sql - 如何避免跨三个连接表的 sql 查询中的重复项

转载 作者:行者123 更新时间:2023-12-04 01:54:44 26 4
gpt4 key购买 nike

在下面的示例中,当我执行两个 LEFT JOIN 以到达“event_name”时,我得到了重复项。我以这种方式设置了 112 个案例。但是,如果我去掉 2 LEFT JOIN 行并运行查询,我会得到正确的 100 条记录,没有重复。我用下面的代码尝试了 DISTINCT,但我仍然得到 112 重复。

SELECT "cases"."id", "cases"."date", "cases"."name", "event"."event_name" 
FROM "cases"
LEFT JOIN "middle_table" ON "cases"."serial" = "middle_table"."m_serial"
LEFT JOIN "event" ON "middle_table"."e_serial" = "event"."ev_serial"
WHERE "cases"."date" BETWEEN '2012-12-11' AND '2012-12-13'

如何指定我只想要“案例”中的 100 个案例,并且我不希望连接中的表中的任何内容产生更多行?

谢谢!

最佳答案

您需要扩展 ON 子句以包含一个条件,以便对于 cases 中的每个条目。 middle_table中只有一个条目匹配条件以及 middle_table 中每个条目的条件event中只有一个条目:

LEFT JOIN middle_table ON cases.serial = middle_table.m_serial AND some_condition

您当然可以使用 DISTINCT。如果这不起作用,则意味着您的结果在字段中完全不同 cases.id , cases.date , cases.nameevent.event_name .检查结果并决定您要丢弃哪些条目并将该条件包含在您的 ON 子句中。

关于sql - 如何避免跨三个连接表的 sql 查询中的重复项,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13943832/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com