考虑以下表格:
用户表
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
答案 0 :(得分: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);