【发布时间】:2016-10-22 23:48:08
【问题描述】:
我有两张桌子
书
+------+--------------+--------+----------+
| bkey | bname | nochap | b_id |
+------+--------------+--------+----------+
| 1 | Let Us C | 17 | luc13 |
| 2 | OOP with C++ | 17 | oopwcpp6 |
+------+--------------+--------+----------+
和
luc13
+------+-----------------+---------+
| cnum | cname | c_id |
+------+-----------------+---------+
| 1 | Getting Started | luc13gs |
| 2 | C Instructions | luc13ci |
+------+-----------------+---------+
所以,你可以看到第二个表的表名(luc13)是第一个表book的元素。所以在显示第二个表时,我不想指定它的名称,所以我写了查询
SELECT * FROM (SELECT b_id FROM book WHERE bkey = 1)
并显示错误,
错误 1248 (42000):每个派生表都必须有自己的别名
于是我搜索了一下,又写了一次查询
SELECT * FROM (SELECT b_id FROM book WHERE bkey = 1 AS custom)
现在错误已消除,但输出仍然是
+-------+
| b_id |
+-------+
| luc13 |
+-------+
所以我认为只有SELECT b_id FROM book WHERE bkey = 1 被执行。
那么有什么方法可以显示我的表 luc13 而无需直接指定其名称?
【问题讨论】:
-
是的。我读了所有这些。我还是不知道你想要什么。
-
我想显示我的第二个表而不直接指定它的名称,这意味着它的名称应该来自表 1,通过使用嵌套的 SELECT 语句,但它没有工作
-
是的,动态 SQL 是您的最佳选择。
-
你能告诉我查询吗
标签: mysql alias derived-table nested-select