mysql bit to int,MySQL将视图列从BIGINT更改为BIT

该博客讨论如何通过SQL查询创建一个视图,该视图使用LEFT OUTER JOIN显示两个朋友表之间的关系,并用BIT字段表示是否存在回路。作者展示了如何构造查询来检查F1和F2玩家之间的朋友关系,并用CASE语句定义BIT字段BACK来标记关系的存在与否。
摘要由CSDN通过智能技术生成

I have a table like this.

(BIGINT) (BIGINT)

PLAYER_ID FRIEND_ID

----------------------

1 2

2 1

1 3

I think I can make a View as

SELECT * FROM FRIEND F1 LEFT OUTER JOIN FRIEND F2 ON F1.FRIEND_ID = F2.PLAYER_ID

printing

F1.PLAYER_ID F1.FRIEND_ID F2.PLAYER_ID F2.FRIEND_ID

[BIGINT] [BIGINT] [BIGINT] [BIGINT]

------------------------------------------------------------

1 2 2 1

2 1 1 2

1 3 NULL NULL

Can I make a View which represents those F2's existence AS BIT?

F1.PLAYER_ID F1.FRIEND_ID BACK

[BIGINT] [BIGINT] [BIT]

-------------------------------------

1 2 1 // exist (1 -> 2)

2 1 1 // exist (2 -> 1)

1 3 0 // no backing relation (3 -> 1)

UPDATE ------------------------------------------------------------------

Sorry the above query wan't perfect.

The query, with @Romil 's answer, must be written like this.

SELECT

F1.PLAYER_ID,

F1.FRIEND_ID,

CASE WHEN F2.FRIEND_ID IS NULL THEN 0 ELSE 1 END AS BACK

FROM FRIEND F1

LEFT OUTER JOIN FRIEND F2

ON F1.FRIEND_ID = F2.PLAYER_ID AND F1.PLAYER_ID = F2.FRIEND_ID

解决方案SELECT F1.PLAYER_ID,

F2.PLAYER_ID,

CASE

WHEN F2.PLAYER_ID IS NULL THEN 0

ELSE 1

end AS Back

FROM FRIEND F1

LEFT OUTER JOIN FRIEND F2

ON F1.FRIEND_ID = F2.PLAYER_ID

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值