【问题标题】:Select Multiple Rows from Joined Table从联接表中选择多行
【发布时间】:2011-02-25 22:10:20
【问题描述】:

我有一个表 A,其中包含一个字段 X,其中包含一个值列表,如 1,2,3 然后是带有字段 uid 的第二个表 B。 如果 A.X 包含 1,2,3 我想从表 B 中获取 uid 为 1 或 2 或 3 的行。

我尝试了这样的加入:

SELECT b.value FROM A a JOIN B b ON b.uid IN ( a.X )

这有点用,但我当然只能在 b.value 中得到 1 个结果。我怎样才能得到所有的结果?我知道我可以只使用第二个查询,但有可能将它合二为一吗?

(我知道使用这样的结构不好,应该使用 n-n 个表,但这是由使用的系统给出的)

【问题讨论】:

    标签: mysql join


    【解决方案1】:

    正如您在问题中所说,这不是一个好的设计。我认为以下应该有效(尽管性能不佳)

    SELECT b.value 
    FROM A a 
    JOIN B b ON  CONCAT(',',a.X,',') LIKE CONCAT('%,',b.uid,',%') 
    

    【讨论】:

    • 啊,这很好用,我不确定是使用它还是只使用第二个查询更好。我从数据库中获得了大量数据(我选择的值比这个更多),唯一的区别是字段 b.value。
    猜你喜欢
    • 1970-01-01
    • 2021-03-13
    • 2011-02-05
    • 2021-08-27
    • 1970-01-01
    • 1970-01-01
    • 2016-11-02
    • 2021-05-04
    • 1970-01-01
    相关资源
    最近更新 更多