0

CONCAT機能についてサポートが必要です。2つのselectクエリがあり、すべてのクエリの結果は1列です。この2つの列を1つにマージする必要があります。それは可能ですか?なぜなら、次のような単純な選択クエリを試しても結果が得られないからです。

SELECT owner FROM table WHERE number="value1";
SELECT number FROM table WHERE owner="value2" AND number IS NOT null;

これらのクエリは機能し、結果のように3行をスローします。しかし、CONCATを使用してそれらを1つの列にマージしたい場合、それは機能しません。なぜなのかご存知ですか?

SELECT CONCAT(SELECT owner FROM table WHERE number="value1",
SELECT number FROM table WHERE owner="value2" AND number IS NOT null
) as NEW_COLUMN FROM table;
4

3 に答える 3

2

私はあなたがこれを望んでいると思います:

SELECT CONCAT(owner, number) newCol1
FROM yourTable
WHERE number="value1"
    OR (owner="value2" AND number IS NOT null)
于 2012-08-23T14:09:09.740 に答える
0
SELECT
   CONCAT(owner, number) as NEW_COLUMN
FROM
   table
WHERE
   owner = "value2"
   AND number = "value1"
   AND number IS NOT NULL
于 2012-08-23T14:08:42.447 に答える
0

基本的な理由は、DB が行数が異なる可能性のある 2 つの異なる SELECT を連結できないことです。

あなたがする必要があるのは、JOIN に関してクエリを再構築することです。

たとえば、次のテーブルがあるとします。

owner    number
John     value1
value2   123456

最初のクエリ:

SELECT owner FROM table WHERE number="value1";

「ジョン」を返します。2つ目

SELECT number FROM table WHERE owner="value2" AND number IS NOT null;

「123456」を返します。

したがって、2 つの値を CONCAT すると、「John 123456」が得られます。

まず第一に、これはあなたが望むクエリの期待される動作ですか? owner=Jack および number=value1 の 3 番目の行があり、最初のクエリが "John" と "Jack" の 2 つの行を返すとどうなりますか?

調べることができることの1つは、CROSS JOIN構文です。

SELECT CONCAT (table1.owner, ', ', table2.number) AS new_column
     FROM ( SELECT owner FROM table WHERE number="value1" ) AS tablel1
     CROSS JOIN
     (SELECT number FROM table WHERE owner="value2" AND number IS NOT null ) AS table2;

最初のクエリが 3 行を返し、2 番目のクエリが 4 行を返す場合、結合されたクエリは 3*4 = 12 行を返すことに注意してください。

于 2012-08-23T14:13:00.830 に答える