用于选择多列数据的Mysql查询


mysql query for selecting data in multiple columns

我有一个有10列的表,我想检查MySQL查询的where子句中的输入值。

我想做这样的事情。但是,当我使用这个查询时,我得到一个错误。

例如:

SELECT * FROM user_data 
where poll_title='$poll_title' 
and '$voter' IN (user_vote_1,user_vote_2,user_vote_3...user_vote_10) 
order by idpoll ASC

user_vote_1到10(值在数据库中是null'ed),我想只从具有$voter值的列检索行。

我想你需要这个比较(当然不确定):-

SELECT * FROM user_data 
where poll_title = "$poll_title"
  and (user_vote_1 = "$voter"
  OR user_vote_2 = "$voter" 
  OR user_vote_3 = "$voter" 
  OR user_vote_4 = "$voter"......OR user_vote_10 = "$voter")
order by idpoll ASC

如果我已经理解了您想要做什么-仅返回具有值的列-那么合并会完成这项工作吗?这假定user_vote_n中的值要么与您正在查找的值匹配,要么为空,因为coalesce返回第一个非空参数。

(未测试)

select coalesce(user_vote_1, user_vote_2, user_vote_3,) as UserVote from user_dataWhere coalesce(user_vote_1, user_vote_2, user_vote_3,) = '$voter';

除此之外,这看起来像是一个可以进行规范化的结构-单个'user_vote'列和单个'user_vote_number'列。