A bad join predicate can explode row counts.
Section: Common pitfalls
Missing or incomplete ON clause
sql
sql
-- Bad: missing relationship detail can multiply rows
SELECT *
FROM orders o
JOIN payments p ON p.customer_id = o.customer_id;Explanation
Always verify that your join key represents the real relationship. In this example, `payment_id` or `order_id` might be required instead.
Learn the surrounding workflow
Compare similar commands or jump into common fixes when this command is part of a bigger troubleshooting path.
Related commands
Same sheet · prioritizing Common pitfalls
WHERE on the right side can break a LEFT JOIN
Filtering after the join can remove rows you meant to preserve.
One-to-many joins can duplicate facts
Totals can be wrong when a base row joins to many detail rows.
Mismatched data types hurt join quality
Joining `INT` to `TEXT` or differently formatted keys can block index use and create hidden bugs.