我有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
值的列中的那些行。
答案 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'列。