可以说我有一个table1
:
id name
-------------
1 "one"
2 "two"
3 "three"
并table2
带有第一个外键的:
id tbl1_fk option value
-------------------------------
1 1 1 1
2 2 1 1
3 1 2 1
4 3 2 1
现在,我想将其作为查询结果:
table1.id | table1.name | option | value
-------------------------------------
1 "one" 1 1
2 "two" 1 1
3 "three"
1 "one" 2 1
2 "two"
3 "three" 2 1
我该如何实现?
我已经尝试过:
SELECT
table1.id,
table1.name,
table2.option,
table2.value
FROM table1 AS table1
LEFT outer JOIN table2 AS table2 ON table1.id = table2.tbl1fk
但结果似乎忽略了空值:
1 "one" 1 1
2 "two" 1 1
1 "one" 2 1
3 "three" 2 1
求助:感谢Mahmoud Gamal:(加上GROUP BY)用此查询解决了
SELECT
t1.id,
t1.name,
t2.option,
t2.value
FROM
(
SELECT t1.id, t1.name, t2.option
FROM table1 AS t1
CROSS JOIN table2 AS t2
) AS t1
LEFT JOIN table2 AS t2 ON t1.id = t2.tbl1fk
AND t1.option = t2.option
group by t1.id, t1.name, t2.option, t2.value
ORDER BY t1.id, t1.name
您必须使用CROSS JOIN
以获得name
第一个表与option
第二个表的所有可能组合。然后将LEFT JOIN
这些与第二张表组合。就像是:
SELECT
t1.id,
t1.name,
t2.option,
t2.value
FROM
(
SELECT t1.id, t1.name, t2.option
FROM table1 AS t1
CROSS JOIN table2 AS t2
) AS t1
LEFT JOIN table2 AS t2 ON t1.id = t2.tbl1_fk
AND t1.option = t2.option
Hyperledger Composer中的查询以定制的查询语言编写。查询在业务网络定义中的一个叫(queries.qry)的查询文件中定义。 查询语法 所有查询都必须包含description和statement属性。 描述 该description属性是描述查询功能的字符串。它必须包含但可以包含任何东西。 声明 该statement属性包含查询的定义规则,可以具有以下运算符: SELECT 是
我正在使用JDBC尝试从以下表中选择: 我想检查是否存在具有特定login和PASSWORDMD5值的行,如下所示: 但当我调用时,我会得到以下错误: com.mysql.jdbc.exceptions.jdbc4.mysqlsyntaxerrorexception:sun.reflect.nativeConstructorAccessorImpl.newInstance(nativeConstr
Lucene查询语言 ElasticSearch提供的一些查询方式(query types)能够被Lucene的查询解析器(query parser)语法所支持。由于这个原因,我们来深入学习Lucene查询语言,了解其庐山真面目吧。 基础语法 用户使用Lucene进行查询操作时,输入的查询语句会被分解成一个或者多个Term以及逻辑运算符号。一个Term,在Lucene中可以是一个词,也可以是一个短
问题内容: 我希望能够使用“替换为”语句更新相同架构的表。最后,我需要能够使用可能已更改的值更新大型表。 这是我用来开始的查询: 我不明白的是,数据库引擎如何知道什么是重复行,什么不是?这些数据非常重要,我不能冒险破坏数据。是否简单如“如果列出的所有列都具有相同的值,它就是重复的行”? 我只是想找出一种有效的方法来执行此操作,因此我可以在一分钟内更新> 45,000行。 问题答案: 如文档所述:
问题内容: 我正在尝试按日期对我的讨论区中的帖子进行排序。这是我的代码: 这在语法上有什么问题吗?如果没有,还有什么可能是错误的?基本上发生的是结果没有显示出来。我删除了Order,它可以工作(但当然没有排序…) 问题答案: 订购应超出限制:
问题内容: 当我运行查询时: 我得到错误: 如何正确制定此查询? 我在使用SQL Server 2000 问题答案: 在最后一个括号后添加一个别名。
在扩展查询模式中可以使用如下特殊操作符: 或(OR)操作符: hello | world 非(NOT)操作符: hello -world hello !world 字段(field)搜索符: @title hello @body world 字段限位修饰符(版本Coreseek 3/Sphinx 0.9.9-rc1中引入): @body[50] hello 多字段搜索符: @(
布尔查询允许使用下列特殊操作符: 显式的与(AND)操作符: hello & world 或(OR)操作符: hello | world 非(NOT)操作符: hello -world hello !world 分组(grouping): ( hello world ) 以下是一个使用了如上全部操作符的例子: Example5.布尔查询示例 ( cat -dog ) | ( cat -mouse)