Mysql 右键进行SQL查询';s
我尝试进行SQL查询,但做不好。 我有一个DB和两个表。第一个表包含ID和单词,第二个表包含ID和同义词。我需要对数据库进行三次查询,以获取输入的一个单词的同义词,但最后一次查询中的问题(正如我所考虑的)。我甚至有关于如何正确创建这些问题的说明,但我被卡住了: 要开始获取单词id查询Mysql 右键进行SQL查询';s,mysql,sql,sqlite,Mysql,Sql,Sqlite,我尝试进行SQL查询,但做不好。 我有一个DB和两个表。第一个表包含ID和单词,第二个表包含ID和同义词。我需要对数据库进行三次查询,以获取输入的一个单词的同义词,但最后一次查询中的问题(正如我所考虑的)。我甚至有关于如何正确创建这些问题的说明,但我被卡住了: 要开始获取单词id查询 SELECT id FROM words WHERE word = 'Profit' 。之后,我们会得到一个同义词列表 SELECT w_id, s_id FROM synonyms WHERE w_id =
SELECT id FROM words WHERE word = 'Profit'
。之后,我们会得到一个同义词列表
SELECT w_id, s_id FROM synonyms WHERE w_id = '1234 'or s_id = '1234'.
对重复值排序选择同义词
SELECT word FROM words WHERE id IN (1,2,3,4,5 ...)
我认为1,2,3,4,5必须是上一个查询,而不是1,2,3,4,5,但是如果我使用它,则输出不会给我任何东西,或者没有给我需要的东西(ID而不是同义词)
表字数据:
(1,'word1'),(2,'word2'),(3,'word3'),(4,'word4'),(5,'word5'),(6,'word6'),(7,'word7'),(8,'word8'),(9,'word9'),(10,'word10'))
从表同义词:
(1,2)、(1,3)、(1,4)、(1,5)、(1,6)、(1,7)、(1,8)、(1,9)、(1,10)
例如:如果我写单词“word1”,那么最后一个查询必须从第二个表中找到与其相关的所有同义词,并在屏幕上显示结果,但给出的却是相同的单词
SELECT sw.word
FROM words w
INNER JOIN
synonyms s ON
s.w_id = w.id
INNER JOIN
words sw ON
sw.id = s.s_id
WHERE w.word = 'Profit'
您还可以用变量替换“利润”,并将其作为一个函数。您必须处理两个方向<代码>w_id→ <代码>序列号,和<代码>序列号→ <代码>w_id。 有几种可能的实现方式;其中之一是:
SELECT word
FROM words
WHERE id IN (SELECT s_id
FROM synonyms
WHERE w_id = (SELECT id
FROM words
WHERE word = 'Profit'))
OR id IN (SELECT w_id
FROM synonyms
WHERE s_id = (SELECT id
FROM words
WHERE word = 'Profit'))
请提供测试数据和您试图实现的输出。我添加了测试数据并解释了编辑的改进,但您的问题仍然不是很清楚。当我说提供测试数据时,我的意思是你需要给出表结构,等等。例如,表同义词的(1,2)是什么?这些列是什么?它们是什么意思?您可能希望使用SQLFIDLE并只向我们提供链接。这里有一个例子:介意把这个问题作为回答吗?=)非常感谢。