MySQL - 返回位等于1的所有列

时间:2013-10-15 21:04:52

标签: php mysql

对于每50个美国州,我正在使用包含50列(带位值)的表。我正在尝试找到一个SQL语句,它将返回包含1的所有列。我已经四处查找了没有运气的方法。

非常感谢任何帮助

2 个答案:

答案 0 :(得分:3)

您应该更好地更改表格设计。更好地使用这样的东西

States table
-------------------
id       int
name     varchar(100)
bitcol   bit(1)

然后你可以选择像这样的状态

select name from States
where bitcol = 1

答案 1 :(得分:3)

如果这是一个新的开发,而不是现有的表,我建议如下。 (否则我很难过。)听起来你已经实现了多对多。我建议您按照@juergen d的建议为州实施一个表(尽管没有位字段);按原样实现当前实体但没有状态列。然后实现第三个包含两列的表,一个用于状态ID,另一个用于实体的ID。

然后,不是在实体表上设置位字段,而是在第三个表中创建条目。

然后,您可以对表执行连接以获取在特定实体上设置的状态。

有关详细信息,请参阅http://en.wikipedia.org/wiki/Many-to-many_(data_model)http://www.lornajane.net/posts/2011/inner-vs-outer-joins-on-a-many-to-many-relationship