我创建了以下查询:
SELECT wvwcs1.*, wvwcs2.* FROM wvwcs1
inner join wvwcs2 on wvwcs1.id = wvwcs2.wvwcs1_id
inner join wvwcs2 w2 on wvwcs1.id = wvwcs2.wvwcs1_id AND wvwcs2.value LIKE '%ee%'
我的表是这样创建的:
CREATE TABLE `wvwcs1` (
`id` int(10) unsigned NOT NULL AUTO_INCREMENT,
`form_id` int(10) unsigned NOT NULL,
PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=11 DEFAULT CHARSET=latin1 COMMENT=' ';
CREATE TABLE `wvwcs2` (
`id` int(10) unsigned NOT NULL AUTO_INCREMENT,
`wvwcs1_id` int(10) unsigned NOT NULL,
`value` varchar(20) NOT NULL,
PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=32 DEFAULT CHARSET=latin1;
以数据为例,仅使用两条记录:
mysql> select * from wvwcs1;
+----+---------+
| id | form_id |
+----+---------+
| 1 | 23 |
| 2 | 24 |
+----+---------+
2 rows in set (0.00 sec)
mysql> select * from wvwcs2;
+----+-----------+-------+
| id | wvwcs1_id | value |
+----+-----------+-------+
| 1 | 1 | aa |
| 2 | 1 | bb |
| 3 | 1 | cc |
| 4 | 2 | aa |
| 5 | 2 | cc |
| 6 | 2 | dd |
| 7 | 2 | ee |
+----+-----------+-------+
2 rows in set (0.00 sec)
我需要做的是,从 wvwcs2
其中一张唱片 wvwcs2
是给定的值。所以,假设我们要选择 wvwcs2.value
= dd
. 在这种情况下,我们会得到回报:
+----+-----------+-------+
| id | wvwcs1_id | value |
+----+-----------+-------+
| 4 | 2 | aa |
| 5 | 2 | cc |
| 6 | 2 | dd |
| 7 | 2 | ee |
+----+-----------+-------+
当我当前运行此查询时,它会提供所有记录。我想我需要在同一个表上进行内部连接,但我必须离开。我被难住了。
2条答案
按热度按时间vdzxcuhz1#
也许这就是你想要的:
请参阅SQLFiddle上的演示(基于cdaigas初始工作)
在第一条评论之后,最简单的解决方案似乎是如下(根本不需要加入任何内容):
ig9co6j12#
试试这个:
请参见SQLFiddle上的演示。