MySQL在一个表中获得多行

时间:2014-12-02 18:59:54

标签: php mysql sql

这是交给我的DB表的结构。 没有ID,只是名称和价值。

|option_name  | option_value|
 | Item1      | Value |
 | Item2      | Value |
 | Item3      | Value |
 | 2ndItem1   | Value |
 | 2ndItem2   | Value |
 | 2ndItem3   | Value |
 | ThirdItem1 | Value |
 | ThirdItem1 | Value |
 | ThirdItem1 | Value |

我想要的陈述会将数据放到以下其中一种:

| item1.value | 2ndItem1.value | ThirdItem1.value|
| item2.value, 2ndItem2, ThirdItem2|

我需要匹配的名称只有少数几个(大约7-8个)所以如果需要的话,手动匹配它们并不是什么大不了的事情

不确定JOIN是否是适合工作的工具,或者是循环还是......我会让你给我建议。

我将在Drupal Migration中使用它,这就是为什么我想将它创建为MYSQL查询。

1 个答案:

答案 0 :(得分:0)

就SQL方面而言,听起来你应该能够做到:

SELECT `option_value` FROM table_name WHERE `option_name` in ('item1', 'item2', 'item3', 'item4');

在PHP中它应该基本上是:

<?php
$items = array('item1', 'item2', 'item3', 'item4');
$itemsStr = implode(',', $users); // returns 'item1','item2','item3','item4'
$sql = "SELECT `option_value` FROM table_name where `option_name` in ({$itemsStr})";

这非常粗糙,但希望能让你朝着正确的方向前进。我确定我使用反引号是在错误的位置