0

名前が「分類されていない」場合に識別できるクエリが必要です

例えば

+---------+------+------+
|Full Name|Cat_ID|Option|
+---------+------+------+
|John Doe |1     |1     |
|John Doe |2     |0     |
|John Doe |3     |0     |
|Jane Doe |1     |0     |
|Jane Doe |2     |0     |
|Jane Doe |3     |0     |
+---------+------+------+

オプションなし = すべてのカテゴリの 1 であるため、Jane Doe を取得するクエリが必要です。
残念ながら、すべての名前には少なくとも 1 つのカテゴリが 0 あるため、全員を抽出することになります。

4

3 に答える 3

3
SELECT DISTINCT Fullname
FROM    tablename
WHERE   fullname NOT IN
        (
            SELECT  a.FullName
            FROM    tablename a
            WHERE   a.option = 1
        )

別の方法は、LEFT JOIN

SELECT  DISTINCT aa.Fullname
FROM    tablename aa
        LEFT JOIN
        (
            SELECT  a.FullName
            FROM    tablename a
            WHERE   a.option = 1
        ) bb ON aa.Fullname = bb.Fullname
WHERE   bb.Fullname IS NULL

JOIN以上を使用することをお勧めしますNOT IN。パフォーマンスを向上させるには、INDEXon columnを定義しますFullName

于 2013-01-28T06:50:41.750 に答える
2

別のアプローチがあります。

SELECT `fullName`
FROM `your_table`
GROUP BY `fullName`
HAVING SUM(`option`)=0
于 2013-01-28T07:19:46.583 に答える
1

もしかしてこういうこと?(おそらく最も効率的ではありませんが、動作するはずです)

SELECT full_name FROM table WHERE full_name NOT IN (SELECT full_name FROM table WHERE option=1);
于 2013-01-28T06:51:13.290 に答える