编写sql查询以获取搜索结果

时间:2013-12-28 02:46:22

标签: mysql sql select distinct

当我编写sql查询以通过文本框获取搜索结果时,它会重复相同的结果多次。我只需要一次结果。请帮我解决这个问题 这是我的查询

SELECT *
FROM pm_record, dead_body
WHERE pm_record.sr_no = dead_body.sr_no
AND dead_body.sr_no = '$input_search'
OR pm_record.date_of_autopsy = '$input_search'
OR pm_record.status = '$input_search'
OR dead_body.sex = '$input_search'
OR dead_body.f_name = '$input_search'
OR dead_body.date_of_death = '$input_search'
OR pm_record.staff_id = '$input_search'
OR pm_record.assiated = '$input_search'
OR pm_record.inq_no_ISD = '$input_search'
OR pm_record.circumstances = '$input_search'

4 个答案:

答案 0 :(得分:2)

使用SELECT DISTINCT *代替SELECT *

答案 1 :(得分:0)

您可以使用DISTINCT。仅指定您需要的列而不是*。

SELECT DISTINCT *
FROM pm_record, dead_body
WHERE pm_record.sr_no = dead_body.sr_no
    AND dead_body.sr_no = '$input_search'
    OR pm_record.date_of_autopsy = '$input_search'
    OR pm_record.status = '$input_search'
    OR dead_body.sex = '$input_search'
    OR dead_body.f_name = '$input_search'
    OR dead_body.date_of_death = '$input_search'
    OR pm_record.staff_id = '$input_search'
    OR pm_record.assiated = '$input_search'
    OR pm_record.inq_no_ISD = '$input_search'
    OR pm_record.circumstances = '$input_search'

答案 2 :(得分:0)

试试这个

SELECT DISTINCT *
    FROM pm_record, dead_body
    WHERE pm_record.sr_no = dead_body.sr_no
    AND 
    (dead_body.sr_no = '$input_search'
    OR pm_record.date_of_autopsy = '$input_search'
    OR pm_record.status = '$input_search'
    OR dead_body.sex = '$input_search'
    OR dead_body.f_name = '$input_search'
    OR dead_body.date_of_death = '$input_search'
    OR pm_record.staff_id = '$input_search'
    OR pm_record.assiated = '$input_search'
    OR pm_record.inq_no_ISD = '$input_search'
    OR pm_record.circumstances = '$input_search' )

答案 3 :(得分:0)

使用DISTINCT关键字删除重复记录,并使用IN子句删除多个OR运算符以提高查询效果。

试试这个:

SELECT DISTINCT *
FROM pm_record p INNER JOIN dead_body d ON p.sr_no = d.sr_no
WHERE '$input_search' IN (d.sr_no, p.date_of_autopsy, p.status, d.sex, d.f_name, 
                          d.date_of_death, p.staff_id, p.assiated, p.inq_no_ISD, 
                          p.circumstances);