所以我有一个复杂的<table ng-table="vm.tableParams" class="table" show-filter="true">
<tr ng-repeat="user in $data">
<!-- L@@k here below! -->
<td title="'Name'">
{{user.name}}
</td>
<td title="'Age'">
{{user.age}}
</td>
</tr>
</table>**
查询,它根据从另一个表和给定变量中提取的信息将信息放入关系表中。
以下是查询:
INSERT
正则表达式是必需的,因为名称可能是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);
或Mr. John Smith
,并且匹配是必需的,因为名称可能是John Smith PH.d
当存储的名称实际上只是{{1}时}。
select查询会在90%的时间内生成我正在寻找的结果,但我需要的唯一真正的列是jon smith
。我遇到的问题是INSERT的预期列数与查询返回的列数。
现在INSERT基本上是这样的:
John Smith
最后一个id
由变量提供。
我的问题是,有没有办法为ORDER BY选择列,但是从结果中省略它们?
答案 0 :(得分:2)
如果列在表/视图中定义,则可以在genfromtxt
中使用它,并从结果中省略它。但在您的情况下,您在ORDER BY
中使用计算列,因此如果您想省略这些列,则必须在ORDER BY
中使用相应的公式替换它们,例如
ORDER BY
我认为这不是一个好的解决方案。相反,最好使用子查询:
ORDER BY
CASE WHEN (`name` = "John Smith") = 1 THEN (`name` = "John Smith") END DESC
-- etc...