我的数据库包含一个表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/