如何简化此SQL语句?

时间:2011-05-15 14:25:25

标签: mysql sql simplify

我有两张桌子,首先,我需要做一些搜索来获得这样的另一张桌子的fk ......

SELECT `related_table_id` 
FROM `table_a` 
WHERE `users_id` = '14' 
  AND `user_data_status` = 'n' 
  AND `another_table_name` = 'table_b'

然后,我有很多related_table_id作为输出......我需要搜索内容,就像%keyword%。  所以,我需要查询另一个这样的SQL:

SELECT * 
FROM table_b 
WHERE (`table_b_id`='218' OR  `table_b_id`='219' OR  `table_b_id`='225') 
  AND `content` LIKE '%keyword%'

问题是,当我的数据库增长时,table_b可能有很多可以从table_a查询的数据,因此,sql语句将变得非常长。我可以将这两个陈述合二为一吗?谢谢你/

2 个答案:

答案 0 :(得分:4)

您可以使用INNER JOIN来“匹配”两个或多个表格的行。

SELECT table_b.* 
FROM table_b 
INNER JOIN table_a
ON table_a.related_table_id = table_b.table_b_id
WHERE table_a.users_id = '14' 
  AND table_a.user_data_status = 'n' 
  AND table_a.another_table_name = 'table_b'
  AND table_b.content LIKE '%keyword%'

答案 1 :(得分:3)

执行嵌套查询:

SELECT * FROM table_b WHERE `table_b_id` IN (SELECT `related_table_id` FROM `table_a` WHERE `users_id` = '14' AND `user_data_status` = 'n' AND `another_table_name` = 'table_b') AND `content` LIKE '%keyword%'
相关问题