【问题标题】:Mysql Fetch Data From Two Tables Without DuplicateMysql从两个表中获取数据而不重复
【发布时间】:2015-07-16 15:57:32
【问题描述】:

我有两张桌子

table customers
cust_id  cust_name    cust_age    cust_level
-----    -----------  --------    ----------
1         raj           19             2  
2         ravi          22             3  
3         mani          20             4  
4         prem          41             1
5         kumar         34             2  



table emails
cont_id  cust_id     email_id          
-----    ----------  --------          
1         4           ravi@hi.com        
2         1           man@ji.com
3         4           ravee@ko.com
4         5           thee@lo.com
5         3           ras@ki.com

现在我想获取 emails.email id LIKE 'r%' 的客户列表,并且列表应该由 customers.cust_level ASC 订购,不会有重复

my required ouptput is 

cust_id       cust_name    email_id      cust_level
-------       --------     --------      ----------
4             prem         ravi@hi.com     1
3             mani         ras@ki.com      4

请仔细查看表格电子邮件,我们有两个客户 ID 4 的电子邮件 ID,但我们只需要一个 customer_id 4 条目[即不需要重复的客户 ID 条目] 可以使用任何类型的join、distinct、group...

【问题讨论】:

  • 你已经有什么 SQL 了?
  • SO 的重点是,当您尝试某些事情时,我们会为您提供帮助 - 尝试整理查询并查看它是否有效,如果它没有在此处发布,您将获得更多帮助。一条线索 - 看看 SQL JOINS & GROUP BY。
  • @PaulF 是的,我有办法....只需通过电子邮件表并将匹配的 id 存储在数组中...然后检查数组是否有重复条目..然后从客户表中获取数据通过客户 ID ......它......但我知道这不是一个公平的方式......你在这里问一个更好的方法......我有解决方案......但我需要正确的解决方案

标签: php mysql join


【解决方案1】:

使用两个表中都存在的列连接两个表,然后返回要显示的列。

SELECT c.cust_id, cust_name, email_id, cust_level
FROM customers c
LEFT JOIN emails e USING (cust_id)

【讨论】:

    【解决方案2】:
    SELECT  c.cust_id as custi_id, c.cust_name as cust_name, e.email_id as email_id, c.cust_level as cust_level
    FROM
    customer c
    JOIN emails e ON (c.cust_id = e.cust_id)
    WHERE e.email_id LIKE  'r%'
    GROUP BY c.cust_id
    ORDER By cust_level
    

    应该可以,如果你需要一个客户的所有电子邮件在一行,添加另一个字段GROUP_CONCAT('e.email_id')

    【讨论】:

      猜你喜欢
      • 2019-02-19
      • 2014-07-18
      • 1970-01-01
      • 2021-08-19
      • 2015-11-13
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多