ci框架中 select语句 和join语句 怎么用
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了ci框架中 select语句 和join语句 怎么用相关的知识,希望对你有一定的参考价值。
$this->db->select('*');$this->db->from('blogs');
$this->db->join('comments', 'comments.id = blogs.id'); 参考技术A LEFT JOIN 关键字会从左表那里返回所有的行,即使在右表中没有匹配的行。
用法如下:
SELECT column_name(s)
FROM table_name1
LEFT JOIN table_name2
ON table_name1.column_name=table_name2.column_name
使用 SELECT 和 JOIN 语句将多个数据插入表中
【中文标题】使用 SELECT 和 JOIN 语句将多个数据插入表中【英文标题】:Inserting multiple data into table with SELECT and JOIN statement 【发布时间】:2018-06-05 08:00:52 【问题描述】:我想将数据插入到表中,其中一列由选择查询填充。这是我的 SQL 语句:
INSERT INTO books ( gid, type, membernumber, changedate, user)
VALUES( '2b4493e8-cae8-4624-8177-fcc96553c5be',
2,
(SELECT member FROM mem m JOIN group g ON m.uid = g.sgroup),
TIMESTAMP '2017-01-03 00:00:00.000',
'mark'
);
我想要实现的是对于每个插入,membernumber
将取自 mem
表,基于 JOIN
与 group
表。
当我执行这个语句时,我得到了错误:
用作表达式的子查询返回多行
例如,如果连接将产生 20 行,则将插入 20 条记录,每个 member
值替换插入中的 membernumber
20 行。
更新
我还有另一个查询,其中两列必须用 SELECT-JOIN 语句替换。 @Tim 给了我一个专栏的例子。我想要一个用两个 SELECT-JOIN 语句填充两列的示例。
【问题讨论】:
【参考方案1】:您可以将其改写为INSERT INTO ... SELECT
:
INSERT INTO books (gid, type, membernumber, changedate, user)
SELECT
'2b4493e8-cae8-4624-8177-fcc96553c5be',
2,
member,
'2017-01-03 00:00:00.000',
'mark'
FROM mem m
INNER JOIN `group` g
ON m.uid = g.sgroup;
这应该可以修复您的语法错误,但现在您必须决定在没有 WHERE
子句的情况下此插入是否有意义。您几乎对每个成员的每个字段都进行了硬编码。
【讨论】:
感谢您的回复。我的下一个问题是,是否可以在同一个查询中对 2 个或多个 Select-Join 语句执行相同的操作,因为我有另一个与第一个类似的问题,但现在使用 3 个 Select-Join 语句。您能否使用上面的查询向我展示一个示例,但假设“用户”将具有 SELECT-Join 之类的成员编号。谢谢 @EddyFreeman 我不完全听从您的评论,但看起来与这个问题有很大的不同。您可能想问一个新问题。以上是关于ci框架中 select语句 和join语句 怎么用的主要内容,如果未能解决你的问题,请参考以下文章