当我编写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'
答案 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);