mysql没有重复行的左连接
也许标题不是最好的,但我不知道如何用几句话来解释它 我有两张这样的桌子: 表“用户” 表“文章用户” 我需要获得所有的用户,并知道他们是否有一个文章的关系,如果他们有这种关系,如果它是过期获取 我不需要知道哪篇文章过期了。我的意思是,如果一个用户与(至少)一篇文章的关系没有过期,答案应该是:“是的,他/她有一个活跃的关系” 我正在处理的查询是:mysql没有重复行的左连接,mysql,duplicates,left-join,Mysql,Duplicates,Left Join,也许标题不是最好的,但我不知道如何用几句话来解释它 我有两张这样的桌子: 表“用户” 表“文章用户” 我需要获得所有的用户,并知道他们是否有一个文章的关系,如果他们有这种关系,如果它是过期获取 我不需要知道哪篇文章过期了。我的意思是,如果一个用户与(至少)一篇文章的关系没有过期,答案应该是:“是的,他/她有一个活跃的关系” 我正在处理的查询是: SELECT u.*, IF(TIMEDIFF(expired_date,CURDATE())<0,'YES',IF(TIMEDIFF(expir
SELECT u.*, IF(TIMEDIFF(expired_date,CURDATE())<0,'YES',IF(TIMEDIFF(expired_date,CURDATE())>0,'EXPIRED','NO')) relation
FROM users u
LEFT JOIN article_users au ON au.user_id = u.id
我试图用一个GROUP_CONCAT函数得到它,但我没办法得到它。我不知道这是不是正确的方法
任何帮助都将不胜感激
提前感谢。请尝试以下方法:
设置:
create table users(
id integer,
name varchar(15)
);
create table article_users (
user_id integer,
article_id integer,
expired_date date
);
insert into users values (1, 'Alice'), (2, 'Bob'), (3, 'Charlie');
insert into article_users values (1, 1, '2016-01-01'),
(1, 2, '2018-01-01'), (3, 1, '2016-01-01');
查询:
select u.name,
case when a.qtd>0 then 'Yes'
when a.qtd=0 then 'Expired'
else 'No' end as relation
from users u
left join
(select user_id,
sum(if(timediff(expired_date, curdate())>0, 1, 0)) qtd
from article_users
group by user_id) a on u.id = a.user_id
order by u.name;
结果:
name relation
------------------
Alice Yes
Bob No
Charlie Expired
由于SQLFiddle当前不工作,我在SQLize上添加了它。看到了吗:是的,这就是我要找的问题。简直完美。非常感谢!
create table users(
id integer,
name varchar(15)
);
create table article_users (
user_id integer,
article_id integer,
expired_date date
);
insert into users values (1, 'Alice'), (2, 'Bob'), (3, 'Charlie');
insert into article_users values (1, 1, '2016-01-01'),
(1, 2, '2018-01-01'), (3, 1, '2016-01-01');
select u.name,
case when a.qtd>0 then 'Yes'
when a.qtd=0 then 'Expired'
else 'No' end as relation
from users u
left join
(select user_id,
sum(if(timediff(expired_date, curdate())>0, 1, 0)) qtd
from article_users
group by user_id) a on u.id = a.user_id
order by u.name;
name relation
------------------
Alice Yes
Bob No
Charlie Expired