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