他のテーブルから引き出された情報と指定された変数に基づいて情報をリレーショナルテーブルに格納する複雑なINSERT
クエリがあります。名前がMr. John Smith
またはJohn Smith PH.d
可能性があるためORDER BYの列を選択して、結果に戻さない
INSERT INTO relational (class_id, teacher_id, student_id)
VALUES (
(SELECT `id`,
(`name` = "John Smith") as exact_score,
(`name` RLIKE "[[:<:]]John Smith[[:>:]]") as reg_score,
(MATCH (`name`) AGAINST ("John Smith")) as match_score
FROM `teachers`
WHERE (`title` RLIKE "[[:<:]]John Smith[[:>:]]" || MATCH (`title`) AGAINST ("John Smith"))
ORDER BY
CASE WHEN exact_score = 1 THEN exact_score END DESC,
CASE WHEN reg_score > 1 THEN reg_score END DESC,
CASE WHEN reg_score = 0 AND exact_score = 0 THEN match_score END DESC),
1, 1);
正規表現が必要とされ、保存された名前は、実際にはJohn Smith
ある場合は名前がjon smith
可能性があるため、一致が必要となります。
は、ここでのクエリです。
選択クエリは、私は、時間の90%を探していた結果が得られますが、私はそれから必要な唯一の本当の列はid
です。私が実行している問題は、INSERTの期待される列数と、クエリによって返される列数との比較です。
は今INSERTは、基本的には、次のようになります。
INSERT INTO relational (class_id, teacher_id, student_id) VALUES ({{returned id (desired)}}, {{exact score (undesired)}}, {{reg score (undesired)}}, {{match score (undesired)}}, 1, 1);
最後1, 1
は変数によって提供されます。
私の質問は、ORDER BYのために列を選択する方法ですが、結果からそれらを省略することはできますか?