【问题标题】:returning the name of the column with the boolean value 0返回具有布尔值 0 的列的名称
【发布时间】:2011-02-08 06:32:42
【问题描述】:

我想查询下表返回SessionId和Roomx的交集为0的列的标题。Room的类型是TINYINT - 在mysql中代表BOOLEAN

下表是:

SessionId    Room1    Room2    Room3
    1          0        1        0  
    2          1        0        1

对于上表,例如 SessionId 1 ,查询应该返回 Room1 和 Room3 帮助将不胜感激。 谢谢。

【问题讨论】:

  • 对我来说听起来像是应用程序逻辑。

标签: mysql boolean tinyint


【解决方案1】:

在我看来,它就像一张需要重新设计的桌子。从列名来看,您应该处理的“对象”(行)是“事件”:一个事件发生在 in 一个房间, 一个部分。通过该设置,您的表格将如下所示:

session_id room_id
1          2
2          1
2          3

现在仍然没有查询可以为您提供在给定会话期间在使用的房间,但很容易找到在使用中的房间:

SELECT room_id FROM events WHERE session_id = <whatever>

并且很容易将其与所有可能的房间列表结合起来以获得您需要的信息。

希望这会有所帮助!

PS:如果你也有一个rooms 表(我不会为此添加一个,但如果你碰巧有一个),那就更容易了:

SELECT id FROM rooms WHERE NOT EXISTS (SELECT * FROM events WHERE room_id = id AND session_id = <whatever>)

【讨论】:

    【解决方案2】:
    SELECT column_name FROM information_schema.columns WHERE table_name = 'tabel Name' 
    

    【讨论】:

    • @Dan Grossman 谢谢,但您所说的应用程序逻辑是什么意思? @Poonam Bhatt 不完全
    • 属于程序代码中的逻辑,而不是数据库查询中的逻辑。
    • 谢谢,我明白了。我将以不同的方式看待 lproblem,看看是否可以使用应用程序逻辑返回相同的问题。
    猜你喜欢
    • 1970-01-01
    • 2013-09-10
    • 1970-01-01
    • 2013-09-02
    • 2018-01-24
    • 1970-01-01
    • 2010-12-14
    • 2021-09-20
    • 2017-03-12
    相关资源
    最近更新 更多