mysql - 连接查询中创建的表中的 2 行

标签 mysql

我有一张表,其中包含项目列表。每个项目有 2 个变体,但它们作为单个项目在此主表中。我想做的是两个变化的结果的笛卡尔积。

SELECT * FROM items

会给我

ID
1
2

我想要:

ID   Variation
1    a
1    b
2    a
2    b

这必须在查询中完成,因为还有另一个左连接。

我可以通过以下方式获得第一个变体:

SELECT * FROM items JOIN (SELECT 'a' as Variation) as v

但这只提供了我需要的 4 行中的 2 行。

我知道如果我有一个包含两行的实际变体表,那就可以了。是否可以创建两行?我也尝试过,但失败了:

SELECT * FROM items JOIN (SELECT ('a','b') as Variation) as v

最佳答案

如果您希望每行项目与 ab 配对,您可以这样做:

SELECT * FROM items
CROSS JOIN (
    SELECT 'a' Variation
    UNION ALL
    SELECT 'b' Variation
    ) Variations

Sample SQL Fiddle

关于mysql - 连接查询中创建的表中的 2 行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26934939/

相关文章:

php - 使用 Div 显示 MySql 数据

mysql - 如果连接表中不存在则显示 0 的 SQL 命令

mysql - 如何统计where子句的结果以计算MYSQL select子句的比例?

php - 使用 AJAX 和 PHP 监控数据库的变化

javascript - 从 PHP 更新 mysql 中的最后一行

mysql - 保存 accepts_nested_attributes_for 的顺序

Mysql INSERT ... ON DUPLICATE KEY 使用新 key 重新插入

Mysql IN 语句只查找列表中的第一个元素

PHP:点击时更改变量值

mysql - 检测 mysql 中数据集内的更改