Sql离开了联接并显示结果

时间:2015-07-24 10:34:48

标签: mysql join

欢迎,

我有两张表int_clientint_client_bank

在第一个重要栏目中:client_id, firstname, lastname, country, email, status。 在第二个:client_id, status

我需要显示第一列的所有记录:firstname, lastname, country, e-mail WHERE status='25'(第二个表中出现client_id的记录除外)。 如果第二个表中出现client_id,则跳过第一列的状态,并在secound表中仅显示status='25'

Sb可以帮助我吗?

编辑:

SELECT firstname, lastname, country, email, COALESCE(b.status, a.status) status
 FROM int_client a
 LEFT JOIN int_client_back b USING (client_id)
 WHERE 
  (b.status IS NULL and a.status='25')
  OR b.status IS NOT NULL;

这是一个很好的代码,但我只需要显示有状态=' 25'在B列中,如果a.client_id!= b.client_id,我需要显示记录,其状态为=' 25'在A栏

某人,帮帮忙?

5 个答案:

答案 0 :(得分:0)

带有LEFT JOIN

COALESCE()应该:

SELECT firstname, lastname, country, email, COALESCE(b.status, a.status) status
 FROM int_client a
 LEFT JOIN int_client_back b USING (client_id)
 WHERE 
  (b.status IS NULL and a.status='25')
  OR b.status IS NOT NULL;

答案 1 :(得分:0)

此选择查询应该有效:

SELECT t1.first_name,t1.last_name,t1.country,t1.email FROM int_client AS t1, int_client_bank AS t2
WHERE t1.client_id = t2.client_id AND t1.status = 25;

答案 2 :(得分:0)

以下是为您提供帮助的查询。

SELECT client_id, firstname, lastname, country, email, status FROM int_client as ic LEFT JOIN int_client_back icb ON ic.client_id=icb.client_id WHERE ic.status=25

答案 3 :(得分:0)

如果我理解正确,您需要来自int_client的所有记录,状态为" 25"。但是,如果int_client_bank中存在其他状态,则您希望显示该状态。

select c.first_name, c.last_name, c.email, c.country,
       coalesce(cb.status, c.status)
from int_client c left join
     int_client_bank cb
     on cb.client_id = c.client_id
where c.status = 25;

答案 4 :(得分:0)

SELECT DISTINCT firstname, lastname, country, email, 
a.status as status_a, b.status as status_b, if(b.status is NULL, a.status, b.status) as final_status
 FROM int_client a
 LEFT JOIN int_client_bank b USING (client_id)
 WHERE 
  if(b.status is NULL, a.status, b.status) = '25'