1
SELECT * FROM テーブル 1、テーブル 2
WHERE table1.user_id = table2.id
AND table1.content = ニュース
AND table1.content_id = 1

それはうまくいきません。SQLステートメントに2つの「AND」を含めることはできませんか??

//トメック

4

6 に答える 6

11

おそらく「ニュース」を文字列として引用したいでしょう...代わりに内部結合を使用したいでしょう(はるかに効率的です)

SELECT * FROM table1
INNER JOIN table2 ON table1.user_id = table2.id 
WHERE table1.content = 'news' 
AND table1.content_id = 1
于 2009-01-14T20:08:47.650 に答える
4

newsは何ですか?ある種のパラメータ?フィールドの値? 現場に出てくるべき言葉?ほとんどの場合、構文が間違っています。詳細については、W3Schools WHEREおよびW3Schools AND/OR演算子のページを参照してください。

于 2009-01-14T20:09:45.137 に答える
3

もう1995年ではないので、JOINステートメントで書き直させてください。ニュースの周りの引用符も必要です

SELECT * FROM table1 t1
inner join table2 t2 on t1.user_id = t2.id
AND t1.content = 'news'
AND t1.content_id = 1
于 2009-01-14T20:11:22.387 に答える
1
  • table1 と table2 はどのように見えますか? 作成スクリプトを貼り付けることはできますか?
  • 適切な JOIN 構文を使用することを強くお勧めします

    select * from table1 内部結合 table2 on table1.user_id = table2.id ......

  • 「table1.content」とはどのようなデータ型ですか?

SQL クエリに 2 つ以上の AND ステートメントを使用できることは間違いありません。SQL-xx 標準のいずれかを実際にサポートするデータベースは、これをサポートします...

于 2009-01-14T20:10:51.343 に答える
1

まず、古いスタイルの join を取り除き、join 句と where 句を明確に分離して理解を容易にすることから始めましょう。

SELECT * FROM table1 t1.
JOIN table2 t2
ON t1.user_id = t2.id
WHERE t1.content = news
AND t1.content_id = 1

では、何が問題なのかを考えてみましょう。これは完全に受け入れられる構文である可能性があるため、最初にどのようなエラーが表示されますか? 問題は、ニュースがどのテーブルから来るのかを書き留めていないことでしょうか? 両方のテーブルにある場合、そこでエラーが発生する可能性があります。ニュースが列の値であることが意図されている場合は、ニュースではなく「ニュース」にする必要があります。また、条件に一致するレコードがないことも考えられます。

さらに、 select * を使用することは悪い習慣であり、少なくとも 1 つのフィールドを 2 回返すことになり、データベースとネットワーク リソースの両方を浪費するため、決して結合で使用しないでください。常に必要な列のみを指定してください。怠惰なプログラマーがすべてのクエリでこれを行うと、これは毎日多くのリソースを浪費します。

于 2009-01-14T20:20:05.537 に答える
0

cmartin の反応が気に入りました。また、必要に応じて複数の AND を使用できます。

于 2009-01-14T20:14:02.817 に答える