假设我有以下数据,最后一列关键字只是其他4个列的组合.
??????????????????????????????????????????????????????????????????????????????????
? ID ? Name ? Add1 ? Add2 ? Add3 ? Keyword ?
??????????????????????????????????????????????????????????????????????????????????
? 1 ? John ? W Brown St ? Edison ? Washington ? JohnW Brown StEdisonWashington ?
? 2 ? Paul ? E High Rd ? Peapack ? New Jersey ? PaulE High RdPeapackNew Jersey ?
? 3 ? John ? Greams Rd ? Peapack ? Washington ? JohnGreams RdPeapackWashington ?
??????????????????????????????????????????????????????????????????????????????????
Run Code Online (Sandbox Code Playgroud)
现在,用户可以输入任何文本字段Name,Add1,Add2,Add3并单击搜索,它应该搜索所有字段.
为此,我正在尝试这个,
SELECT *, COUNT(ID) AS FREQUENCY FROM TABA WHERE ID IN
(
(SELECT ID FROM TABA WHERE KEYWORD LIKE '%WASHINGTON%')
UNION ALL
(SELECT ID FROM TABA WHERE KEYWORD LIKE '%JOHN%')
UNION ALL
(SELECT ID FROM TABA WHERE KEYWORD LIKE '%PEAPACK%')
)
GROUP BY ID
ORDER BY FREQUENCY
Run Code Online (Sandbox Code Playgroud)
预期产出:
?????????????????????????????????????????????????????????????
? ID ? Name ? Add1 ? Add2 ? Add3 ? Frequency ?
?????????????????????????????????????????????????????????????
? 3 ? John ? Greams Rd ? Peapack ? Washington ? 3 ?
? 1 ? John ? W Brown St ? Edison ? Washington ? 2 ?
? 2 ? Paul ? E High Rd ? Peapack ? New Jersey ? 1 ?
?????????????????????????????????????????????????????????????
Run Code Online (Sandbox Code Playgroud)
但我得到的所有频率值为1.我做错了什么?
小智 3
该部分... WHERE ID IN ( ...) ...只会进行“是或否”检查,但您想要计数。这必须通过 JOIN 来完成。
尝试这个:
SELECT TABA.*, COUNT(sub.ID) AS FREQUENCY FROM TABA JOIN
(
(SELECT ID FROM TABA WHERE KEYWORD LIKE '%WASHINGTON%')
UNION ALL
(SELECT ID FROM TABA WHERE KEYWORD LIKE '%JOHN%')
UNION ALL
(SELECT ID FROM TABA WHERE KEYWORD LIKE '%PEAPACK%')
) sub ON sub.ID=TABA.ID
GROUP BY TABA.ID
ORDER BY FREQUENCY
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
84 次 |
| 最近记录: |