【发布时间】:2014-02-19 14:41:21
【问题描述】:
我正在编写 sql 代码。我遇到了障碍,就是SQL查询中的选择语句太多。最后我想到达9个选择结果的交集
我的 sql 代码如下,只有 1 个选择语句。 8 个精选句子与仅搜索词不同,例如)霍乱、腹泻、发烧、呕吐、恶心等
首先选择句子。不要惊讶。这段代码简单又重复。
(SELECT code_co.code, code_co.disease_co, code_en.disease_en
FROM code_co
LEFT JOIN code_en ON code_en.code = code_co.code
LEFT JOIN note ON note.code = code_co.code
LEFT JOIN inclusion ON inclusion.code = code_co.code
LEFT JOIN exclusion ON exclusion.code = code_co.code
LEFT JOIN ds ON code_co.code = ds.code
LEFT JOIN tx ON code_co.code = tx.code
LEFT JOIN sx ON code_co.code = sx.code
WHERE
note LIKE CONCAT( '%', (
SELECT ds_word.ds_en
FROM ds_word
WHERE ds_co LIKE '%cholera%'
LIMIT 0 , 1
), '%' )
or
ds_content LIKE CONCAT( '%', (
SELECT ds_word.ds_en
FROM ds_word
WHERE ds_co LIKE '%cholera%'
LIMIT 0 , 1
), '%' )
...
inclusion LIKE CONCAT( '%', (
SELECT ds_word.ds_en
FROM ds_word
WHERE ds_co LIKE '%cholera%'
LIMIT 0 , 1
), '%' )
)
下面是phpmyadmin上的截图。
真正有效的代码! 第二个选择句与第一句相同,除了霍乱。霍乱是我的搜索词。 这样,我就有了 9 个选择句子。 我想得到交集,但在 MySQL 中,我怎么关心? 相交或减号只能在 2 个句子中使用。 (对吧?)
(第一个选择句子) 相交 (第二个选择句子) 相交 (第三选择句) ... 这种方式对吗?
请帮助我。 谢谢你的建议
【问题讨论】:
-
这听起来像是一个糟糕的、非执行的方法。你需要一个解析器/索引器,而不是 SQL。