Mysql 创建虚拟列以验证其他列上是否存在数据
mtu用户:Mysql 创建虚拟列以验证其他列上是否存在数据,mysql,join,Mysql,Join,mtu用户: usr_id usr_login usr_passwd 1 user1 user1 2 user2 user2 3 user3 user3 4 user4 user4
usr_id usr_login usr_passwd
1 user1 user1
2 user2 user2
3 user3 user3
4 user4 user4
sttgs_id sttgs_description
1 Setting 1
2 Setting 2
3 Setting 3
4 Setting 4
5 Setting 5
uss_id usr_id sttgs_id
1 1 1
2 1 2
3 2 5
4 3 2
5 3 3
6 3 5
7 4 4
mt\U设置:
usr_id usr_login usr_passwd
1 user1 user1
2 user2 user2
3 user3 user3
4 user4 user4
sttgs_id sttgs_description
1 Setting 1
2 Setting 2
3 Setting 3
4 Setting 4
5 Setting 5
uss_id usr_id sttgs_id
1 1 1
2 1 2
3 2 5
4 3 2
5 3 3
6 3 5
7 4 4
mt\u用户设置:
usr_id usr_login usr_passwd
1 user1 user1
2 user2 user2
3 user3 user3
4 user4 user4
sttgs_id sttgs_description
1 Setting 1
2 Setting 2
3 Setting 3
4 Setting 4
5 Setting 5
uss_id usr_id sttgs_id
1 1 1
2 1 2
3 2 5
4 3 2
5 3 3
6 3 5
7 4 4
我需要展示的是如下数据:
其中usr\u id='2'
:
sttgs_id sttgs_description has it? (virtual_column)
1 Setting 1 0
2 Setting 2 0
3 Setting 3 0
4 Setting 4 0
5 Setting 5 1
sttgs_id sttgs_description has it? (virtual_column)
1 Setting 1 0
2 Setting 2 1
3 Setting 3 1
4 Setting 4 0
5 Setting 5 1
其中usr\u id='3'
:
sttgs_id sttgs_description has it? (virtual_column)
1 Setting 1 0
2 Setting 2 0
3 Setting 3 0
4 Setting 4 0
5 Setting 5 1
sttgs_id sttgs_description has it? (virtual_column)
1 Setting 1 0
2 Setting 2 1
3 Setting 3 1
4 Setting 4 0
5 Setting 5 1
我怎样才能正确地做呢
SELECT s.sttgs_id, s.sttgs_description, IF(st.uss_id,1,0) as `has it`
FROM mt_user u
JOIN mt_settings s
LEFT JOIN mt_user_settings us ON us.usr_id = u.usr_id AND us.sttgs_id = s.sttgs_id
WHERE u.usr_id = 2
也可以在不使用用户表的情况下执行此操作
SELECT s.sttgs_id, s.sttgs_description, IF(st.uss_id,1,0) as `has it`
FROM mt_settings s
LEFT JOIN mt_user_settings us ON us.usr_id = 2 AND us.sttgs_id = s.sttgs_id
您应该在
之后格式化零件,其中usr\u id='2'
。