从不同的表中选择包含单词列表的记录。

huangapple go评论94阅读模式
英文:

Select records which contains list of words from different table

问题

以下是[Product]表。

我想从[Product]中选择包含在Table_B中列出的单词的记录。

id ProductName
1 ABC代金券
2 维生素发生器
3 黑巧克力
4 快速充电
5 遥控器
6 电力发生器
7 LED电视

以下是Table_B(其中包含一个单词列表)。

WordList
Generator
Fast
Controller

所需输出:

Sr Full_List
2 维生素发生器
4 快速充电
5 遥控器
6 电力发生器

为了方便,以下是示例数据的SQL代码:

  1. DROP TABLE IF EXISTS #products
  2. CREATE TABLE #products (
  3. id INT NOT NULL PRIMARY KEY,
  4. ProductName VARCHAR(255) NOT NULL
  5. );
  6. INSERT INTO #products (id, ProductName)
  7. VALUES
  8. (1, 'ABC代金券'),
  9. (2, '维生素发生器'),
  10. (3, '黑巧克力'),
  11. (4, '快速充电'),
  12. (5, '遥控器'),
  13. (6, '电力发生器'),
  14. (7, 'LED电视');
  15. -
  16. DROP TABLE IF EXISTS #Table_B
  17. CREATE TABLE #Table_B (
  18. WordList VARCHAR(255) NOT NULL
  19. );
  20. INSERT INTO #Table_B (WordList)
  21. VALUES
  22. ('发生器'),
  23. ('快速'),
  24. ('遥控器');
  25. "or"Where条件中使用Like运算符在我的情况下不起作用,因为列表是动态且很长。
  26. <details>
  27. <summary>英文:</summary>
  28. Following is the [Product] Table.
  29. I want to select records from [Product] that contain words listed in Table_B.
  30. | id | ProductName |
  31. |----|-------------------|
  32. | 1 | ABC Voucher |
  33. | 2 | Vitamin Generator |
  34. | 3 | Dark Chocolate |
  35. | 4 | Fast Charge |
  36. | 5 | Remote Controller |
  37. | 6 | Power Generator |
  38. | 7 | LED TV |
  39. Following is Table_B (Which contains a list of Words)
  40. | WordList |
  41. |------------|
  42. | Generator |
  43. | Fast |
  44. | Controller |
  45. **Required Output:**
  46. | Sr | Full_List |
  47. |----|-------------------|
  48. | 2 | Vitamin Generator |
  49. | 4 | Fast Charge |
  50. | 5 | Remote Controller |
  51. | 6 | Power Generator |
  52. For easy, following is the SQL Code for sample data:
  53. DROP TABLE IF EXISTS #products
  54. CREATE TABLE #products (
  55. id INT NOT NULL PRIMARY KEY,
  56. ProductName VARCHAR(255) NOT NULL
  57. );
  58. INSERT INTO #products (id, ProductName)
  59. VALUES
  60. (1, &#39;ABC Voucher&#39;),
  61. (2, &#39;Vitamin Generator&#39;),
  62. (3, &#39;Dark Chocolate&#39;),
  63. (4, &#39;Fast Charge&#39;),
  64. (5, &#39;Remote Controller&#39;),
  65. (6, &#39;Power Generator&#39;),
  66. (7, &#39;LED TV&#39;);
  67. -
  68. DROP TABLE IF EXISTS #Table_B
  69. CREATE TABLE #Table_B (
  70. WordList VARCHAR(255) NOT NULL
  71. );
  72. INSERT INTO #Table_B (WordList)
  73. VALUES
  74. (&#39;Generator&#39;),
  75. (&#39;Fast&#39;),
  76. (&#39;Controller&#39;);
  77. Like operator with &quot;or&quot; in Where condition will not work in my case as list is dynamic and long.
  78. </details>
  79. # 答案1
  80. **得分**: 1
  81. 你可以将EXISTSLIKE结合使用以实现你的需求
  82. ```sql
  83. SELECT * FROM #products p
  84. WHERE EXISTS
  85. (
  86. SELECT * FROM #Table_B b
  87. WHERE p.ProductName LIKE '%' + b.WordList + '%'
  88. )
英文:

You can use EXISTS in combination with LIKE to achieve what you need.

  1. SELECT * FROM #products p
  2. WHERE EXISTS
  3. (
  4. SELECT * FROM #Table_B b
  5. WHERE p.ProductName LIKE &#39;%&#39; + b.WordList + &#39;%&#39;
  6. )

答案2

得分: -2

  1. SELECT id, ProductName
  2. FROM Product
  3. WHERE ProductName IN
  4. (SELECT WordList FROM Table_B)
英文:
  1. SELECT id, ProductName
  2. FROM Product
  3. where ProductName IN
  4. (SELECT WordList FROM Table_B)

huangapple
  • 本文由 发表于 2023年3月7日 21:12:19
  • 转载请务必保留本文链接:https://go.coder-hub.com/75662429.html
匿名

发表评论

匿名网友

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen:

确定