在 SQLite 和/或 MySQL 中,是否可以将列定义为SELECT
语句?
就像列Book.NumOfPages
实际上是一样SELECT COUNT(*) FROM PAGES WHERE BOOK_ID=BOOK.ID
,所以 NumOfPages 会自动计算分配给某本书的页数。
请注意,我知道如何在一次选择中获取书籍数量。我想知道是否可以将 select 语句定义为列的一部分。
目前尚不清楚您要实现什么目标,但您至少有以下选择:
SELECT
,以便进行连接、分组、计算聚合等(示例 2)示例 1
SELECT id, `title`,
(SELECT COUNT(*)
FROM pages p
WHERE p.book_id = b.id) npages
FROM books b
输出
| ID | TITLE | NPAGES |
-----------------------
| 1 | book1 | 3 |
| 2 | book2 | 2 |
示例 2
SELECT SUM(npages) total_pages
FROM (SELECT id, `title`,
(SELECT COUNT(*)
FROM pages p
WHERE p.book_id = b.id) npages
FROM books b) t
示例 3 创建视图
CREATE VIEW vw_books AS
SELECT id, `title`,
(SELECT COUNT(*)
FROM pages p
WHERE p.book_id = b.id) npages
FROM books b
示例 4 创建 SP
DELIMITER $$
CREATE PROCEDURE sp_books()
BEGIN
SELECT id, `title`,
(SELECT COUNT(*)
FROM pages p
WHERE p.book_id = b.id) npages
FROM books b;
END$$
DELIMITER ;
并使用它
CALL sp_books();
我相信这就是您的想法:http://en.wikipedia.org/wiki/View_(database)
数据库视图允许您制作一个“假”表,其中包含对其他表的查询。我知道它适用于 MySQL,但我不会对 SQLite 做出任何承诺。