SELECT * FROM table1, table2 WHERE table1.user_id = table2.id AND table1.content = news AND table1.content_id = 1
это не сработает. не может у вас есть два «И» в выражении sql ??
// Томек
Это правильный вопрос, просто плохо сформулированный. Вместо того, чтобы голосовать против, почему бы не отредактировать вопрос, чтобы его было немного легче понять?
Не все могут редактировать вопросы - так что отрицательный голос - это все, что у нас есть - к тому же это действительно неубедительный вопрос.
@Out In Space - я предполагаю, что ему трудно редактировать вопросы без необходимой репутации.
@Out Into Space, да, это так, я не могу редактировать вопрос, я бы с удовольствием это сделал. Теперь, когда его отредактировали, я с радостью сниму свой голос против.
@Jeff, я сделал общее заявление для будущих противников. Надеюсь, никто не обиделся.


вы, вероятно, захотите процитировать «новости» в виде строки ... Вы также, вероятно, захотите вместо этого использовать внутреннее соединение (гораздо более эффективно)
SELECT * FROM table1
INNER JOIN table2 ON table1.user_id = table2.id
WHERE table1.content = 'news'
AND table1.content_id = 1
news это какой? Какой-то параметр? Значение поля? Слово, которое должно появиться в поле? Скорее всего, ваш синтаксис неверен, дополнительную информацию см. На страницах операторов W3Schools ГДЕ и W3Schools И / ИЛИ.
Я бы рекомендовал СИЛЬНО использовать правильный синтаксис JOIN:
выберите * из таблицы1 внутреннее соединение table2 на table1.user_id = table2.id ......
какие типы данных у "table1.content"?
У вас определенно может быть намного больше, чем просто 2 оператора AND в SQL-запросе - любая база данных, которая действительно поддерживает любой из стандартов SQL-xx, будет поддерживать это ...
позвольте мне переписать это для вас с помощью оператора JOIN, поскольку это уже не 1995 год, вам также нужны цитаты вокруг новостей
SELECT * FROM table1 t1
inner join table2 t2 on t1.user_id = t2.id
AND t1.content = 'news'
AND t1.content_id = 1
Мне понравился ответ cmartin. Кроме того, при необходимости вы можете использовать более одного AND.
Сначала давайте начнем с избавления от этого соединения в старом стиле, чтобы предложения 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 за расплывчатое название, а не в форме вопроса. Недостаточно описания ошибки.