我的数据库包含一个表person和这些字段username, name, online, visible, ...
我有以下问题要询问

SELECT *,
    CASE
        WHEN online = 0 THEN 0
        WHEN visible = 0 THEN 0
        ELSE online
    END AS online
FROM person
where id = SOMEID

我正试图将用户设置可见性逻辑的联机/脱机操作直接移到查询中。基本上根据可见性状态显示联机状态(如果用户选择不可见,则即使用户联机也显示脱机)。
这类作品是有问题的。我在这个查询的结果中得到两个重复的列。
username | name | online | visible | ... | online
x        | x    | x      | x       | ... | x

由于我无法控制的原因,我坚持使用SELECT *而不是手动在列中键入SELECT username, name, visible, ...。有没有办法从online中排除SELECT *字段?因为它稍后将由CASE语句创建。

最佳答案

不幸的是,*表示所有列,无法从select*中排除特定列。也许你可以给你的栏目起个类似“在线状态”的名字,在你的代码中使用“在线状态”而不是“在线”。

关于sql - 避免在select语句中重复列,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/51133924/

10-12 05:44