sql AND OR LIKE运算符显示值

时间:2017-02-09 08:55:33

标签: mysql sql

这是一个简单的问题,但还没有得到解决方案。我想从这里解释的列中获取有效数字。

这里的问题是选择一个值

    SELECT absent_id FROM staff_attendance WHERE attendance_date='2017-02-06' AND absent_id='25'  AND school_id='1'

但absent_id表值存储在

`absent_id`    
  1,12,25

这里显然不需要表格,因为它不是有效数字。

期望的结果是

 absent_id 
     25

2 个答案:

答案 0 :(得分:0)

您应该真正规范化表格结构。切勿在一行和一列中存储多个值。这是非规范化设计的众多问题之一。

目前,您可以使用MySQL内置FIND_IN_SET

SELECT
  absent_id ids,
  '25' absent_id
FROM staff_attendance
WHERE attendance_date='2017-02-06'
AND find_in_set('25', absent_id)
AND school_id='1'

上述方法可行,但如果数据集很大,则会非常慢。这是因为MySQL不能在列上使用索引加上它是一个字符串搜索操作,这种操作一定很慢。

答案 1 :(得分:0)

如果absent_id是integer数据类型列。那么试试吧 这个..

SELECT absent_id FROM staff_attendance WHERE attendance_date='2017-02-06' AND absent_id=25  AND school_id=1