我有一个名为doc
的表,其中有几个字段:
user_id | user_name | hostel | summary | branch | year | doc
在此字段中,条目是:
user_id user_name hostel summary branch year doc
1 shikhar.447 K.P-6 TnpRegi CSE 2011 s.JPG
2 shikhar.447 K.P-6 EndSeme CSE 2011 placemet.jpeg
3 shikhar.447 K.P-9 DDD I.T 2011 og (1).jpg
5 shikhar.447 K.P-6,K.P-9 EEE CSE,I.T 2011,2012 Drawing6.jpg
6 shikhar.447 K.P-6,K.P-9 Xzxx CSE,I.T 2011,2012 Drawing5.jpg
8 shikhar.447 K.P-6 Zxzxzx CSE 2011 Drawing2.jpg
9 shikhar.447 K.P-6,K.P-9 NLKLD CSE 2011 Drawing.jpg
如果没有正确显示,那么我想澄清一下 :
1 is user_id,shikhar.447 is user_name,K.P-6 is hostel,TnpReg is summary,CSE
is branch,2011 is year,s.JPG is doc
similarly in some column you can see there are multiple entries with a comma(,)
like K.P-6,K.P-9.
所以我的问题是我应该写什么查询 如果我选择hostel =" K.P-6&#34 ;, branch =" CSE",year = 2011 从复选框中提交它。它必须显示多列值的doc列值以及单列值的结果。
最初我写了这样的查询:
SELECT doc,summary FROM doc WHERE hostel="K.P-6" OR branch="CSE" AND year="2011"
但它只给我单值列,它不会在多值列中搜索。
所以任何人都可以帮助我。
答案 0 :(得分:1)
在where子句中使用like
:
SELECT doc,summary FROM doc WHERE hostel like "%K.P-6%" OR branch like "%CSE%" AND year="2011"
但是,建议您将表格标准化
答案 1 :(得分:0)
将多个值存储在一个列中是一个坏主意。
但是,在您的情况下,您可以使用find_in_set()
:
SELECT doc, summary
FROM doc
WHERE find_in_set('K.P-6', hostel) > 0 OR
find_in_set('CSE', branch) AND
find_in_set('2011', year);
对于条件,您还应该与OR
和AND
保持一致。我不确定你真正想要的是什么,所以我没有改变逻辑。