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

时间:2015-09-04 10:26:17

标签: php mysql

我有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),我想只检索具有$voter值的列中的那些行。

2 个答案:

答案 0 :(得分:0)

我认为你需要这种比较(不确定当然): -

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

答案 1 :(得分:0)

如果我已经理解你想要做什么 - 只返回带有值的列 - 那么会合并完成这项工作吗?这假设user_vote_n中的值将与您要查找的值匹配或为null,因为coalesce返回第一个非null参数。

(未测试的)

  

从user_data选择coalesce(user_vote_1,user_vote_2,user_vote_3)作为UserVote   合并的地方(user_vote_1,user_vote_2,user_vote_3,)=' $ voter';

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