デフォルトでUNION
は、重複行が生成されないことを知っています。ただし、この場合、sort_col
並べ替えの目的で列を使用したため、UNION
重複する行が生成されます(実際にsort_col
は各で異なるため、重複しませんselect
)。明確にするために、この回答とコメントも参照してください。これを克服するにはどうすればよいですか?
$key_word_1 = $what;
$key_word_2 = $what."%";
$key_word_3 = "%".$what."%";
(SELECT 1 AS sort_col,
chair.id_user,
chair.company,
chair.district,
chair.summary,
chair.place,
products.name
FROM chair
LEFT JOIN products
ON chair.id_user = products.id_user
WHERE ( chair.district LIKE ?
AND chair.place LIKE ? )
AND ( chair.company LIKE ?
OR chair.summary LIKE ?
OR products.name LIKE ?
OR products.description LIKE ? )
GROUP BY chair.id_user)
UNION
(SELECT 2,
chair.id_user,
chair.company,
chair.district,
chair.summary,
chair.place,
products.name
FROM chair
LEFT JOIN products
ON chair.id_user = products.id_user
WHERE ( chair.district LIKE ?
AND chair.place LIKE ? )
AND ( chair.company LIKE ?
OR chair.summary LIKE ?
OR products.name LIKE ?
OR products.description LIKE ? )
GROUP BY chair.id_user)
UNION
(SELECT 3,
chair.id_user,
chair.company,
chair.district,
chair.summary,
chair.place,
products.name
FROM chair
LEFT JOIN products
ON chair.id_user = products.id_user
WHERE ( chair.district LIKE ?
AND chair.place LIKE ? )
AND ( chair.company LIKE ?
OR chair.summary LIKE ?
OR products.name LIKE ?
OR products.description LIKE ? )
GROUP BY chair.id_user)
ORDER BY sort_col
LIMIT
?, ?