简体   繁体   中英

Mysql join query with where condition and distinct records

I have two tables called tc_revenue and tc_rates .

  • tc_revenue contains :- code, revenue, startDate, endDate
  • tc_rate contains :- code, tier, payout, startDate, endDate

Now I need to get records where code = 100 and records should be unique..

I have used this query

SELECT * 
FROM task_code_rates 
LEFT JOIN task_code_revenue ON task_code_revenue.code = task_code_rates.code
WHERE task_code_rates.code = 105;

But I am getting repeated records help me to find the correct solution.

eg:

在此处输入图片说明

in this example every record is repeated 2 time

Thanks

Use a group by for whatever field you need unique. For example, if you want one row per code, then:

SELECT * FROM task_code_rates LEFT JOIN task_code_revenue ON task_code_revenue.code = task_code_rates.code
where task_code_rates.code = 105
group by task_code_revenue.code, task_code_revenue.tier

If code admits duplicates in both tables and you perform join only using code, then you will get the cartessian product between all matching rows from one table and all matching rows from the other.

If you have 5 records with code 100 in first table and 2 records with code 100 in second table, you'll get 5 times 2 results, all combinations between matching rows from the left and the right.

Unless you have duplicates inside one (or both) tables, all 10 results will differ in colums coming either from one table, the other or both.

But if you were expecting to get two combined rows and three rows from first table with nulls for second table columns, this will not happen.

This is how joins work, and anyway, how should the database decide which rows to combine if it didn't generate all combinations and let you decide in where clause?

Maybe you need to add more criteria to the ON clause, such as also matching dates?

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM