我只知道有关SQL的最低要求,所以请把我当作一个完整的菜鸟!
我有一个表,其中有很多行,但是其中一些行可以通过id配对,我想合并这些行的返回数组。
post_id # meta_name # meta_value #
======================================
1 # bar # 44 #
1 # foo # on #
2 # bar # 1 #
2 # foo # on #
3 # bar # 1 #
3 # foo # off #
作为按比例缩小的版本,想象一下我表的上方,我的目标是返回2个结果
1 # foo # bar # 44 # on
2 # foo # bar # 1 # on
基于ID相关并且c2的值为’on’
我的尝试是从一些阅读中得到以下内容,但没有得到
SELECT
t1.post_id, t2.post_id, t1.meta_name, t2.meta_name, t1.meta_value, t2.meta_value
FROM
`ecom_page_meta` t1
JOIN
`ecom_page_meta` t2
ON
t1.post_id = t2.post_id
WHERE
t1.meta_name = 'featured-products'
AND
t1.meta_value = 'on'
任何帮助将不胜感激
编辑
我认为Id只需发布下面的语法就可以了,这要归功于下面的答案:
SELECT L.post_id, L.meta_name, R.meta_name, L.meta_value, R.meta_value
FROM `ecom_page_meta` L
INNER JOIN ecom_page_meta R
ON L.post_id = R.post_id
AND L.meta_name = 'featured-products-order'
AND R.meta_value = 'on'
WHERE R.meta_name = 'featured-products'
ORDER BY L.meta_value
DESC
再次感谢。
创建测试数据:
SQL> create table ecom_page_meta (post_id number not null
2 , meta_name varchar2(15) not null
3 , meta_value varchar2(15) not null);
Table created.
SQL> insert into ecom_page_meta values (1, 'bar', '44');
1 row created.
SQL> insert into ecom_page_meta values (1, 'foo', 'on');
1 row created.
SQL> insert into ecom_page_meta values (2, 'bar', '1');
1 row created.
SQL> insert into ecom_page_meta values (2, 'foo', 'on');
1 row created.
SQL> insert into ecom_page_meta values (3, 'bar', '1');
1 row created.
SQL> insert into ecom_page_meta values (3, 'foo', 'off');
1 row created.
SQL> commit;
Commit complete.
查询以给出与OP样本匹配的结果:
SQL> select L.post_id, L.meta_name, R.meta_name, L.meta_value, R.meta_value
2 from ecom_page_meta L
3 inner join ecom_page_meta R
4 on L.post_id = R.post_id
5 and L.meta_value <> 'on'
6 and R.meta_value = 'on'
7 where L.meta_name = 'bar';
POST_ID META_NAME META_NAME META_VALUE META_VALUE
---------- --------------- --------------- --------------- ---------------
1 bar foo 44 on
2 bar foo 1 on
我仍然不知道该WHERE t1.meta_name = 'featured-products'
怎么做,因为没有示例数据包含字符串“ featured-products”的t1.meta_name。
我有一个列为col1-col10的表tablename。并非每一行都填充了col4,但每一行都填充了col1、col2、col3。我想在col4满足条件时获取所有{col1,col2,col3}元组,然后从tablename中获取与元组{col1,col2,col3}匹配的所有行。 我不确定是否应该使用内部联接、左联接或其他方式?(我认为内部连接和左连接都应该给我相同的结果)下面的查询给了我一个语
问题内容: 我有一个通用的“ Dimension”和“ DimensionMember”表。 这些表存储大量维和维成员。 我想从可变数量的维中交叉连接维成员。示例:“性别”,“就业类型”,“合同类型”维度中的交叉联接维度成员应产生以下组合 组合的标签应通过连接维度成员的标签来创建(如上所示)。 先感谢您 更新 维度列表(例如“性别”,“就业类型”,“合同类型”)是DYNAMIC(由运行时的另一个查
问题内容: 我有2张桌子。为了简化: 表1,用户: userId int,userName nvarchar(50) 表2消息: msgId int,msgFrom int,msgTo int … msg1和msg2都包含userId。现在,我想获取所有消息,但是我想要用户名而不是msgFrom。我知道该怎么办: 一切正常,花花公子。获取用户名而不是msgTo的方法相同。现在的问题是,如何在同一调
T-SQL 组合来自两个或多个表的记录。它用于将两个或多个表中的记录连接到数据库中。JOIN 用于通过使用彼此相等的值连接许多表中的字段。 假设有下面两张表,(a) CUSTOMERS表,记录如下—— (b) 另一个表 ORDERS,记录如下 - 在 SELECT 语句中连接这两个表,如下所示 - 执行上面查询语句,得到以下结果 - 连接在 WHERE 子句中执行。许多运算符将用于连接表,例如:
在关系数据库管理系统中,表建立时各数据之间的关系不必确定,常把一个实体的所有信息存放在一个表中。当检索数据时,通过连接操作查询出存放在多个表中的不同实体的信息。连接操作给用户带来很大的灵活性,它们可以在任何时候增加新的数据类型。为不同实体创建新的表,之后通过连接进行查询。 连接可以在语句的子句或子句中建立,似是而非在FROM子句中指出连接时有助于将连接操作与WHERE子句中的搜索条件区分开来。所以
问题内容: 我有两个表: A (col1,col2,col3,col4) B (col1,col2,col3,col4) 表 A 有4条记录(行),表 B 有6行。我想这样连接它们,例如将它们连接到 C 表中 C ( B.col1 , B.col2 ,A.col3,A.col4,B.col3,B.col4)(表中记录中的值不同,只是col1和col2包含相同的值) 当我在A.col1 = B.co