0

私はこのMySQLクエリを持っています(動作中)

最初のクエリ:

SELECT id
FROM users
WHERE publisher_set = '1'
AND publisher_status = '1'
AND publisher_content != ''
AND publisher_amount != '0'
AND publisher_now < publisher_max
AND EXISTS (

SELECT *
FROM user_counter
WHERE users.id = user_counter.publisher_id
)

上記のMySQLクエリは、2つのテーブルからユーザーIDを見つけることです。

ここで、この2番目のMySQLクエリを使用してもう一度比較したいと思います(動作中)

2番目のクエリ:

SELECT users.id, publisher_amount, publisher_now, publisher_max, counter
FROM users
INNER JOIN user_counter ON users.id = user_counter.publisher_id
WHERE no = 08123456789
AND counter < publisher_amount

しかし、私がこのようにすべてのクエリに参加すると:

SELECT id
FROM users
WHERE publisher_set = '1'
AND publisher_status = '1'
AND publisher_content != ''
AND publisher_amount != '0'
AND publisher_now < publisher_max
AND EXISTS (

SELECT *
FROM user_counter
WHERE users.id = user_counter.publisher_id
)

AND (
SELECT users.id, publisher_amount, publisher_now, publisher_max, counter
FROM users
INNER JOIN user_counter ON users.id = user_counter.publisher_id
WHERE no =08123456789
AND counter < publisher_amount
)

このエラーが発生します:

オペランドには1つの列が含まれている必要があります

次に、1列を使用してみましたが、結果は私が望んでいたものではありません。

私の質問は、最初と2番目のクエリを結合する方法ですか?エラーは発生しません。

私はそれをグーグルで試しました、そして多くの「試行錯誤」の後、これは私がクエリを機能させるために得ることができる遠いところです。

4

4 に答える 4

1

2番目のサブクエリでEXISTSを見逃していると思います。とにかく、私があなたの質問を正しく理解していれば、あなたはあなたの質問を次のように書くことができると思います:

SELECT
  u.id
FROM
  users u inner join user_counter uc
  on u.id=uc.publisher_id
     and no=08123456789
     and counter < publisher_amount
WHERE
  u.publisher_set = '1'
  AND u.publisher_status = '1'
  AND u.publisher_content != ''
  AND u.publisher_amount != '0'
  AND u.publisher_now < publisher_max
于 2012-12-18T18:02:46.747 に答える
0

最初のEXISTS句を次のように変更できます。

and users.id in (select user_counter.publisher_id from user_counter) 

最後のクエリでEXISTSを使用します。

于 2012-12-18T17:03:46.257 に答える
0

これを行うこともできます:

AND EXISTS (

SELECT user_counter.publisher_id
FROM user_counter
WHERE users.id = user_counter.publisher_id

PS:SQLFIDDLEは、何らかの理由で私の側では機能しません。そうでなければ、デモンストレーションを喜んで提供していたでしょう;)

于 2012-12-18T17:19:37.900 に答える
0
SELECT id
FROM users
WHERE publisher_set = '1'
AND publisher_status = '1' 
AND publisher_content != ''
AND publisher_amount != '0'
AND publisher_now < publisher_max
AND EXISTS (
select 1 from  user_counter where  users.id = user_counter.publisher_id
    and  no =08123456789
AND counter < publisher_amount
)

と仮定nocounterて、テーブルにありますuser_counter。スキーマなしで見分けるのは少し難しいです。

于 2012-12-18T17:47:29.050 に答える