私はカラムがあるテーブル 'places'を持っています:id(ユニーク)、名前、郵便。名前は複製できます。LIKEステートメントと組み合わせたユニークなカラムを取得
名前を重複する名前ではなく、needle
で始まる最初の20個のレコードを検索するクエリを実行したいとします。これは、ajaxのライブ検索用です。 ポイントは、これを郵便と組み合わせる必要があるということです。なぜなら、私は異なる地域の場所をカットしたくないからです。最初の2桁の郵便で十分です。データの
例:
id name postal
1 Bradford BD83CB
2 Bradford BD74RT
3 Keighley BD215CT
4 Bradford CC763DD
5 Braster DD339CL
ここで針は、ID 4を持つレコードからブラッドフォードからブラッドフォード以外の領域にあるので、結果は、1と4と5のIDが含まれている必要があり 「ブラ%」であります私が試したどのようなID 1と2
:
SELECT id, `name`, postal FROM places WHERE `name` LIKE 'needle%' GROUP BY `name` LIMIT 20
しかし、それは、十分ではありませんもちろん、このカットはすべてnames
と私は持っていないので、 IDが1、4、5のレコードですが、IDは1のみです。私はどこかの条件に郵便番号を追加する必要があります。
最後に、できるだけ早くAjax検索を行う必要があります。
高性能でこれを見つけるオプションがない場合は、列searchable
に可能な値0と1を追加し、where文でこれを使用することを検討します。
を実行していますか?国の列もありますか? – SMA
国については何もせず、国には列がありません。彼らが同じである場合よりも郵便物の決定の最初の2文字だけが、同じ郡/地域にあります。 – nexequ
https://meta.stackoverflow.com/questions/333952/why-should-i-provide-an-mcve-for-what-seems-to-me-to-be-a-very-simple-sql-クエリ – Strawberry