选择 * 从表 1、表 2 在哪里 table1.user_id = table2.id AND table1.content = 新闻 AND table1.content_id = 1
那行不通。你不能在一个sql语句中有两个“AND”吗?
//托梅克
选择 * 从表 1、表 2 在哪里 table1.user_id = table2.id AND table1.content = 新闻 AND table1.content_id = 1
那行不通。你不能在一个sql语句中有两个“AND”吗?
//托梅克
您可能想将“新闻”引用为字符串...您也可能想改用内部联接(效率更高)
SELECT * FROM table1
INNER JOIN table2 ON table1.user_id = table2.id
WHERE table1.content = 'news'
AND table1.content_id = 1
news
是什么?某种参数?领域的价值?应该出现在该领域的一个词?您的语法很可能是错误的,请参阅W3Schools WHERE和W3Schools AND/OR运算符页面了解更多信息。
让我用 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
我强烈建议使用正确的 JOIN 语法:
select * from table1 inner join table2 on table1.user_id = table2.id ......
“table1.content”是什么数据类型?
您绝对可以在 SQL 查询中拥有不止 2 条 AND 语句 - 任何真正支持任何 SQL-xx 标准的数据库都将支持这一点......
首先让我们从摆脱旧式连接开始,以便将连接和 where 子句清楚地分开,以便更容易理解。
SELECT * FROM table1 t1.
JOIN table2 t2
ON t1.user_id = t2.id
WHERE t1.content = news
AND t1.content_id = 1
现在让我们讨论一下可能是什么问题。首先,您收到什么错误,因为这可能是完全可以接受的语法?问题可能是您没有注意到来自哪个表消息?如果它在两个表中,则可能会出现错误。如果 news 是该列的值,则您希望它是“news”而不是 news。也可能只是没有记录符合您的条件。
此外,使用 select * 是一种不好的做法,并且永远不应该在连接中使用它,因为您至少要返回一个字段两次,这会浪费数据库和网络资源。始终只指定您需要的列。当懒惰的程序员在每个查询中都这样做时,这每天都会浪费大量资源。
我喜欢 cmartin 的回应。此外,如果需要,您可以使用多个 AND。