【问题标题】:How to LEFT JOIN on a table defined in a table column如何在表列中定义的表上进行 LEFT JOIN
【发布时间】:2018-10-03 09:34:57
【问题描述】:

考虑下表:

用户表

id | name | createdAt  |
-----------------------|
1  | John | 2018-02-02 |

活动表

id | itemId | itemTable | createdAt  |
-------------------------------------|
13 | 1      | User      | 2018-02-02 |
14 | 142    | Client    | 2018-02-02 |

我希望能够LEFT JOIN对列中指定的表:

SELECT    b.* 
FROM      activity      AS a 
LEFT JOIN *a.tablename* AS b 
ON        b.id = a.itemid

对于 MemSQL 或 MySQL

【问题讨论】:

  • 用您正在使用的数据库标记您的问题。
  • 不,不,不,不。你不应该这样做。只有在您别无选择的情况下,SQL 才应该是动态的。

标签: mysql sql dynamic


【解决方案1】:

您不能在 SELECT 查询中执行此操作。 SQL 不是这样操作的。

如果你知道只有两个表,你可以这样表达查询:

SELECT u.* 
FROM USER u 
WHERE u.id = (SELECT 1 FROM activity a WHERE  a.itemid = u.id) 
UNION ALL 
SELECT c.* 
FROM client c 
WHERE c.id = (SELECT 1 FROM activity a WHERE  a.itemid = c.id); 

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-12-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-09-27
    相关资源
    最近更新 更多