【发布时间】:2019-12-19 02:46:57
【问题描述】:
我是 SQL 的新手,不知何故找到了一份需要我做 SQL 的工作(不要在你的简历中撒谎)。无论如何,我正在尝试执行一个 SELECT 语句,我想在 tableA 中选择一个 columnA,其中 ColumnA 中的单词存在于另一个 tableB 中,下面是我想要实现的示例。
TableA, ColumnA : {Apple, Ball, Chair, Doll, Egg, Fan, Gun, Hat, Ink, Jug}
TableB, ColumnB : {Chair, Ball, Egg, Ink}
所以我试着想出我想要的陈述如下
SELECT ColumnA FROM TableA
WHERE ColumnA = (SELECT ColumnB FROM TableB)
OR
SELECT ColumnA FROM TableA
WHERE ColumnA LIKE '%' + (SELECT ColumnB FROM TableB) + '%'
当然它不起作用,因为它会返回超过 1 个值。我对此还是很陌生,不知道如何使用像 CURSOR 这样的功能。非常感谢帮助。谢谢。
(编辑):所以从答案来看,使用 IN 和 JOIN 都可以解决我需要的问题。非常感谢你。但是,我也想知道我需要使用 LIKE 的情况,假设 columnA 和 columnB 有
ColumnA : {'This apple is red', 'This ball is round', 'This chair is metal'}
ColumnB : {'red', 'round'}
所以我想显示来自 columnA 的数据,其中包含 columnB 中存在的关键字。我在想唯一的方法是结合通配符并从columnB中选择。非常感谢您的帮助,谢谢。
【问题讨论】:
-
数据实际上是以上述格式保存到数据库中的还是某种速记形式?
-
除了将 = 更改为 IN 外,尽量避免使用双通配符:brentozar.com/archive/2019/12/…
-
@RossBush 只是简写,但结构相同
标签: sql sql-server