【问题标题】:SQL query - Fetch data from one column separated by commaSQL 查询 - 从以逗号分隔的一列中获取数据
【发布时间】:2011-12-09 10:53:36
【问题描述】:

您好,我在从用逗号分隔的一列中提取数据时遇到问题,

我的问题是:

 Table1               
 ID | Cat          
--------
 1  | XY

 2  | ER

 3  | FF

Table2               
Id | Text | Text2 | Table1ID | Text3 | text3          
--------------------------------------------------
1  |  --  |  --   | 1,2,3    |  ---  | ---

2  |  --  |  --   | 3,1,2    |  ---  | ---

3  |  --  |  --   | 1,3,4    |  ---  | ---

我需要 SELECT 查询从 Table1 列 Cat 获取数据,其中 Table1.ID=Table2.Table1ID 并且我只有一个 Cat,但我需要 Table2.Table1ID 中的所有数据

这是我现在的查询:

SELECT * FROM Table2, Table1 
        WHERE Table2.Table1ID=$ID 
        AND Table2.Table1ID=Table1.Id
        AND Table2.Table1ID

我只从 Table1ID 中得到一个数据,逗号后面的所有内容都是不可见的

谢谢帮助

【问题讨论】:

  • 在 SQL 中拆分字符串是一种皇家 PITA。我认为这是为了阻止人们将数据存储在逗号分隔的字符串中。所以我的第一个问题是:这是您正在使用的生产模式,还是您可以控制该模式,以便您可以将其更改为以每个 id 存储在单独记录中的方式工作?跨度>
  • 想说的太多,时间太少了……

标签: mysql sql


【解决方案1】:

好吧,那么对不起。我误解了你的解释。

可能不是更好的方法,但它可能有效:

SELECT * FROM Table2 WHERE Table2.Cat Like '%$ID,%' OR Table2.Cat Like '%,$ID'

【讨论】:

  • 我的变量 $ID 只保存 Table1.ID 中的一个 ID 我需要 Table2.Table1ID 1,2,3 等中的所有数据来帮助
【解决方案2】:
SELECT * FROM Table2, Table1 
        WHERE Table1.Id=$ID 
        AND FIND_IN_SET(Table1.Id, Table2.Table1ID) <> 0

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-11-29
    • 1970-01-01
    • 2018-10-28
    • 2012-02-04
    • 2022-01-07
    相关资源
    最近更新 更多