我有 2 个表:loinc 和 panels。我目前有一个成功的 GROUP_CONCAT 和 MATCH AGAINST 查询。缩短了一点:
SELECT LOINC_NUM as ln,LONG_COMMON_NAME,SYSTEM,
(SELECT GROUP_CONCAT(PARENT_NAME) from panels WHERE LOINC_NUM = ln) as PANEL_STRING,
(SELECT GROUP_CONCAT(PARENT_LOINC) from panels WHERE LOINC_NUM = ln) as PANEL_LOINC_STRING,
MATCH (SYSTEM,LONG_COMMON_NAME)
AGAINST ('string' IN BOOLEAN MODE) AS score FROM loinc
WHERE MATCH(SYSTEM,LONG_COMMON_NAME)
AGAINST ('string' IN BOOLEAN MODE)
ORDER BY score DESC LIMIT 100
但是,如果我也想匹配 PANEL_STRING“字段”(这是一个 GROUP_CONCAT)。我在别处发现我可以将子查询更改为连接,但是这似乎只返回一行,因为并非 loinc 中的每一行都连接到面板。
任何人都愿意帮助我并告诉我如何使 GROUP_CONCAT 字段成为我可以用于 MATCH AGAINST 搜索的字段?谢谢
最佳答案
如果您的面板名称是层级 ID(如 001.007.0014),您可以创建一个以层级 ID 开头的 GROUP_CONCAT,然后在末尾添加 LOINC 编号或 LOINC 部分编号(如 001.007.014:LP7407- 7 和 001.007.014:9987-6)。使用 GROUP_CONCAT,您可以搜索面板的整个部分或仅搜索单个 LOINC 或 LOINC 部分。
关于MySQL 在 MATCH AGAINST 中使用 GROUP_CONCAT 字段,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7884678/