I’m using MariaDB 10.3 and I have table like:
x
post_id post_content post_user_id post_shared
1 Test1 1 0
2 Test2 2 0
3 Test2 1 2
post_shared = 0 means this is original post and is not shared.
I am looking for a way to know if the post has been shared by a particular user (coming from post_user_id). Example output is as follows:
post_id isShared ( post_user_id 1)
1 0 (false)
2 1 (true)
3 0 (false)
I tried a LEFT JOIN to the same table and checked using if condition, but the code is returning me erroneous value.
Thx all for help 🙂
Advertisement
Answer
You can add a boolean flag using a correlated subquery or left join
. If there are no duplicates:
select t.*, (ts.post_id is not null) as isShared
from t left join
ts
on ts.post_shared = t.post_id and
ts.post_user_id = 1;
As a correlated subquery, this looks like:
select t.*,
(exists (select 1
from ts
where ts.post_shared = t.post_id and
ts.post_user_id = 1
)
) as isShared